From 5ec3f02180ba959e829ea3114880c4b8efc63048 Mon Sep 17 00:00:00 2001 From: Thomas Lively Date: Tue, 3 Nov 2026 10:53:04 -0800 Subject: [PATCH 1/2] [spectec] Update meta-interpreter for descriptors Update the SpecTec meta-interpreter backend (construct.ml, host.ml, interpreter.ml, relation.ml, runner.ml) and il2al variable renaming (postprocess.ml) to support exact heap types, exact external function types, descriptor types, struct instance descriptors, and the custom descriptors instructions, while keeping --test-version 3 compatible with specification/wasm-3.0. --- interpreter/exec/eval.ml | 4 +- interpreter/runtime/aggr.ml | 8 +- interpreter/runtime/aggr.mli | 2 +- spectec/src/backend-interpreter/construct.ml | 84 ++++++++++++++++--- spectec/src/backend-interpreter/host.ml | 6 +- .../src/backend-interpreter/interpreter.ml | 8 ++ spectec/src/backend-interpreter/relation.ml | 16 +++- spectec/src/backend-interpreter/runner.ml | 5 +- spectec/src/exe-spectec/main.ml | 2 +- spectec/src/il2al/postprocess.ml | 9 +- spectec/src/il2al/translate.ml | 2 +- spectec/test-interpreter/TEST.md | 34 +++++++- 12 files changed, 150 insertions(+), 30 deletions(-) diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml index 4ef68d863..eebf626e1 100644 --- a/interpreter/exec/eval.ml +++ b/interpreter/exec/eval.ml @@ -755,7 +755,7 @@ let rec step (c : config) : config = | StructGet (x, i, exto), Ref NullRef :: vs' -> vs', [Trapping "null structure reference" @@ e.at] - | StructGet (x, i, exto), Ref Aggr.(StructRef (Struct (_, fs, _))) :: vs' -> + | StructGet (x, i, exto), Ref Aggr.(StructRef (Struct (_, _, fs))) :: vs' -> let f = try Lib.List32.nth fs i with Failure _ -> Crash.error e.at "undefined field" @@ -766,7 +766,7 @@ let rec step (c : config) : config = | StructSet (x, i), v :: Ref NullRef :: vs' -> vs', [Trapping "null structure reference" @@ e.at] - | StructSet (x, i), v :: Ref Aggr.(StructRef (Struct (_, fs, _))) :: vs' -> + | StructSet (x, i), v :: Ref Aggr.(StructRef (Struct (_, _, fs))) :: vs' -> let f = try Lib.List32.nth fs i with Failure _ -> Crash.error e.at "undefined field" diff --git a/interpreter/runtime/aggr.ml b/interpreter/runtime/aggr.ml index c0fed0193..ecf1ea774 100644 --- a/interpreter/runtime/aggr.ml +++ b/interpreter/runtime/aggr.ml @@ -5,7 +5,7 @@ type field = | ValField of value ref | PackField of packtype * int ref -type struct_ = Struct of deftype * field list * ref_ option +type struct_ = Struct of deftype * ref_ option * field list type array = Array of deftype * field list type ref_ += StructRef of struct_ @@ -43,7 +43,7 @@ let array_length (Array (_, fs)) = Lib.List32.length fs let alloc_struct dt vs desc = assert Free.((deftype dt).types = Set.empty); let fts = structtype_of_comptype (expand_deftype dt) in - Struct (dt, List.map2 alloc_field fts vs, desc) + Struct (dt, desc, List.map2 alloc_field fts vs) let alloc_array dt vs = assert Free.((deftype dt).types = Set.empty); @@ -55,7 +55,7 @@ let type_of_struct (Struct (dt, _, _)) = dt let type_of_array (Array (dt, _)) = dt let read_desc = function - | StructRef (Struct (_, _, Some desc)) -> Some desc + | StructRef (Struct (_, Some desc, _)) -> Some desc | _ -> None let () = @@ -87,6 +87,6 @@ let () = let nest = ref 0 in (* TODO: print descriptor *) Value.string_of_ref' := function - | StructRef (Struct (_, fs, _)) -> string_of_aggr "struct" nest fs + | StructRef (Struct (_, _, fs)) -> string_of_aggr "struct" nest fs | ArrayRef (Array (_, fs)) -> string_of_aggr "array" nest fs | r -> string_of_ref' r diff --git a/interpreter/runtime/aggr.mli b/interpreter/runtime/aggr.mli index 7f421a48f..807ec7cb8 100644 --- a/interpreter/runtime/aggr.mli +++ b/interpreter/runtime/aggr.mli @@ -5,7 +5,7 @@ type field = | ValField of value ref | PackField of packtype * int ref -type struct_ = Struct of deftype * field list * ref_ option +type struct_ = Struct of deftype * ref_ option * field list type array = Array of deftype * field list type ref_ += StructRef of struct_ diff --git a/spectec/src/backend-interpreter/construct.ml b/spectec/src/backend-interpreter/construct.ml index 4c372cac2..e344c5799 100644 --- a/spectec/src/backend-interpreter/construct.ml +++ b/spectec/src/backend-interpreter/construct.ml @@ -25,7 +25,7 @@ let error_instr category instr' = (* Constant *) -let version = ref 3 +let version = ref 4 (* Destruct *) @@ -109,6 +109,11 @@ let al_to_mut: value -> mut = function | OptV _ -> Var | v -> error_value "mut" v +let al_to_exact: value -> exact = function + | OptV None -> Inexact + | OptV _ -> Exact + | v -> error_value "exact" v + let rec al_to_storagetype: value -> storagetype = function | CaseV ("I8", []) -> PackStorageT I8T | CaseV ("I16", []) -> PackStorageT I16T @@ -127,8 +132,23 @@ and al_to_comptype: value -> comptype = function | CaseV ("->", [ rt1; rt2 ]) -> FuncT (al_to_resulttype rt1, (al_to_resulttype rt2)) | v -> error_value "comptype" v -and al_to_desctype: value-> desctype = function - | v -> DescT (None, None, al_to_comptype v) (* TODO *) +and al_to_describes: value -> typeuse = function + | CaseV ("DESCRIBES", [ tu ]) -> al_to_typeuse tu + | v -> error_value "describes" v + +and al_to_descriptor: value -> typeuse = function + | CaseV ("DESCRIPTOR", [ tu ]) -> al_to_typeuse tu + | v -> error_value "descriptor" v + +and al_to_desctype: value -> desctype = function + | v when !version <= 3 -> DescT (None, None, al_to_comptype v) + | CaseV ("", [ dcs; dcr; ct ]) | TupV [ dcs; dcr; ct ] -> + DescT ( + al_to_opt al_to_describes dcs, + al_to_opt al_to_descriptor dcr, + al_to_comptype ct + ) + | v -> error_value "desctype" v and al_to_subtype: value -> subtype = function | CaseV ("SUB", [ fin; tul; st ]) -> @@ -172,7 +192,10 @@ and al_to_heaptype: value -> heaptype = function | "EXTERN" | "EXTERNREF" -> ExternHT | "NOEXTERN" -> NoExternHT | _ -> error_value "absheaptype" v) - | CaseV (("_IDX" | "REC" | "_DEF"), _) as v -> UseHT (Inexact, al_to_typeuse v) (* TODO: exactness *) + | CaseV ("_HT", [ CaseV ("", [ ex; tu ]) | TupV [ ex; tu ] ]) -> + UseHT (al_to_exact ex, al_to_typeuse tu) + | CaseV (("_IDX" | "REC" | "_DEF"), _) as v when !version <= 3 -> + UseHT (Inexact, al_to_typeuse v) | v -> error_value "heaptype" v and al_to_reftype: value -> reftype = function @@ -792,6 +815,10 @@ and al_to_instr': value -> Ast.instr' = function BrOnCast (al_to_idx idx, al_to_reftype rt1, al_to_reftype rt2) | CaseV ("BR_ON_CAST_FAIL", [ idx; rt1; rt2 ]) -> BrOnCastFail (al_to_idx idx, al_to_reftype rt1, al_to_reftype rt2) + | CaseV ("BR_ON_CAST_DESC_EQ", [ idx; rt1; rt2 ]) -> + BrOnCastDescEq (al_to_idx idx, al_to_reftype rt1, al_to_reftype rt2) + | CaseV ("BR_ON_CAST_DESC_EQ_FAIL", [ idx; rt1; rt2 ]) -> + BrOnCastDescEqFail (al_to_idx idx, al_to_reftype rt1, al_to_reftype rt2) | CaseV ("RETURN", []) -> Return | CaseV ("CALL", [ idx ]) -> Call (al_to_idx idx) | CaseV ("CALL_REF", [ typeuse ]) -> CallRef (al_to_idx_of_typeuse typeuse) @@ -822,6 +849,8 @@ and al_to_instr': value -> Ast.instr' = function | CaseV ("REF.AS_NON_NULL", []) -> RefAsNonNull | CaseV ("REF.TEST", [ rt ]) -> RefTest (al_to_reftype rt) | CaseV ("REF.CAST", [ rt ]) -> RefCast (al_to_reftype rt) + | CaseV ("REF.CAST_DESC_EQ", [ rt ]) -> RefCastDescEq (al_to_reftype rt) + | CaseV ("REF.GET_DESC", [ idx ]) -> RefGetDesc (al_to_idx idx) | CaseV ("REF.EQ", []) -> RefEq | CaseV ("REF.I31", []) -> RefI31 | CaseV ("I31.GET", [ sx ]) -> I31Get (al_to_sx sx) @@ -916,7 +945,10 @@ let al_to_data': value -> data' = function let al_to_data: value -> data = al_to_phrase al_to_data' let al_to_externtype = function - | CaseV ("FUNC", [typeuse]) -> ExternFuncT (Inexact, al_to_typeuse typeuse) (* TODO: exactness *) + | CaseV ("FUNC", [ typeuse ]) when !version <= 3 -> + ExternFuncT (Inexact, al_to_typeuse typeuse) + | CaseV ("FUNC", [ CaseV ("", [ ex; tu ]) | TupV [ ex; tu ] ]) -> + ExternFuncT (al_to_exact ex, al_to_typeuse tu) | CaseV ("GLOBAL", [globaltype]) -> ExternGlobalT (al_to_globaltype globaltype) | CaseV ("TABLE", [tabletype]) -> ExternTableT (al_to_tabletype tabletype) | CaseV ("MEM", [memtype]) -> ExternMemoryT (al_to_memorytype memtype) @@ -990,10 +1022,15 @@ and al_to_array: value -> Aggr.array = function and al_to_struct: value -> Aggr.struct_ = function | StrV r when Record.mem "TYPE" r && Record.mem "FIELDS" r -> + let desc = + if Record.mem "DESC" r then + al_to_opt (fun a -> al_to_ref (CaseV ("REF.STRUCT_ADDR", [ a ]))) (Record.find "DESC" r) + else None + in Aggr.Struct ( al_to_deftype (Record.find "TYPE" r), - al_to_list al_to_field (Record.find "FIELDS" r), - None (* TODO: descriptors *) + desc, + al_to_list al_to_field (Record.find "FIELDS" r) ) | v -> error_value "struct" v @@ -1131,6 +1168,10 @@ let al_of_mut = function | Cons -> none "MUT" | Var -> some "MUT" +let al_of_exact = function + | Inexact -> none "EXACT" + | Exact -> some "EXACT" + let rec al_of_storagetype = function | ValStorageT vt -> al_of_valtype vt | PackStorageT _ as st -> nullary (string_of_storagetype st) @@ -1145,8 +1186,18 @@ and al_of_comptype = function | ArrayT ft -> CaseV ("ARRAY", [ al_of_fieldtype ft ]) | FuncT (rt1, rt2) -> CaseV ("->", [ al_of_resulttype rt1; al_of_resulttype rt2 ]) +and al_of_describes tu = CaseV ("DESCRIBES", [ al_of_typeuse tu ]) + +and al_of_descriptor tu = CaseV ("DESCRIPTOR", [ al_of_typeuse tu ]) + and al_of_desctype = function - | DescT (_, _, ct) -> al_of_comptype ct (* TODO *) + | DescT (_, _, ct) when !version <= 3 -> al_of_comptype ct + | DescT (dcs, dcr, ct) -> + CaseV ("", [ + al_of_opt al_of_describes dcs; + al_of_opt al_of_descriptor dcr; + al_of_comptype ct; + ]) and al_of_subtype = function | SubT (fin, tul, st) -> @@ -1169,7 +1220,9 @@ and al_of_typeuse_of_idx = function | idx -> CaseV ("_IDX", [ al_of_idx idx ]) and al_of_heaptype = function - | UseHT (_, tu) -> al_of_typeuse tu (* TODO: exactness *) + | UseHT (_, tu) when !version <= 3 -> al_of_typeuse tu + | UseHT (ex, tu) -> + CaseV ("_HT", [ CaseV ("", [ al_of_exact ex; al_of_typeuse tu ]) ]) | BotHT -> nullary "BOT" | FuncHT | ExternHT as ht when !version <= 2 -> string_of_heaptype ht ^ "REF" |> nullary @@ -1833,7 +1886,7 @@ let rec al_of_instr instr = let args = (if !version = 1 then [] else [ al_of_idx idx1 ]) @ [ al_of_typeuse_of_idx idx2 ] in CaseV ("CALL_INDIRECT", args) | ReturnCall idx -> CaseV ("RETURN_CALL", [ al_of_idx idx ]) - | ReturnCallRef idx -> CaseV ("RETURN_CALL_REF", [ al_of_idx idx ]) + | ReturnCallRef idx -> CaseV ("RETURN_CALL_REF", [ al_of_typeuse_of_idx idx ]) | ReturnCallIndirect (idx1, idx2) -> CaseV ("RETURN_CALL_INDIRECT", [ al_of_idx idx1; al_of_typeuse_of_idx idx2 ]) | Throw idx -> CaseV ("THROW", [ al_of_idx idx ]) @@ -1864,8 +1917,10 @@ let rec al_of_instr instr = | RefEq -> nullary "REF.EQ" | RefI31 -> nullary "REF.I31" | I31Get sx -> CaseV ("I31.GET", [ al_of_sx sx ]) - | StructNew (idx, Explicit, _) -> CaseV ("STRUCT.NEW", [ al_of_idx idx ]) (* TODO(tlively): descriptors *) - | StructNew (idx, Implicit, _) -> CaseV ("STRUCT.NEW_DEFAULT", [ al_of_idx idx ]) (* TODO(tlively): descriptors *) + | StructNew (idx, Explicit, NoDesc) -> CaseV ("STRUCT.NEW", [ al_of_idx idx ]) + | StructNew (idx, Implicit, NoDesc) -> CaseV ("STRUCT.NEW_DEFAULT", [ al_of_idx idx ]) + | StructNew (idx, Explicit, Desc) -> CaseV ("STRUCT.NEW_DESC", [ al_of_idx idx ]) + | StructNew (idx, Implicit, Desc) -> CaseV ("STRUCT.NEW_DEFAULT_DESC", [ al_of_idx idx ]) | StructGet (idx1, idx2, sx_opt) -> CaseV ("STRUCT.GET", [ al_of_opt al_of_sx sx_opt; @@ -1988,7 +2043,10 @@ let al_of_data data = let al_of_externtype = function - | ExternFuncT (_, typeuse) -> CaseV ("FUNC", [al_of_typeuse typeuse]) (* TODO: exactness *) + | ExternFuncT (_, typeuse) when !version <= 3 -> + CaseV ("FUNC", [ al_of_typeuse typeuse ]) + | ExternFuncT (ex, typeuse) -> + CaseV ("FUNC", [ CaseV ("", [ al_of_exact ex; al_of_typeuse typeuse ]) ]) | ExternGlobalT (globaltype) -> CaseV ("GLOBAL", [al_of_globaltype globaltype]) | ExternTableT (tabletype) -> CaseV ("TABLE", [al_of_tabletype tabletype]) | ExternMemoryT (memtype) -> CaseV ("MEM", [al_of_memorytype memtype]) diff --git a/spectec/src/backend-interpreter/host.ml b/spectec/src/backend-interpreter/host.ml index 7fb04491c..f43d77a97 100644 --- a/spectec/src/backend-interpreter/host.ml +++ b/spectec/src/backend-interpreter/host.ml @@ -23,10 +23,14 @@ let spectest () = let ptype = Array.map nullary type_tags in let arrow = CaseV ("->", [ listV ptype; listV [||] ]) in let ftype = CaseV ("->", [ listV ptype; listV [||] ]) in + let desctype = + if !Construct.version <= 3 then ftype + else CaseV ("", [ none "DESCRIBES"; none "DESCRIPTOR"; ftype ]) + in let dtype = CaseV ("_DEF", [ CaseV ("REC", [ - [| CaseV ("SUB", [some "FINAL"; listV [||]; ftype]) |] |> listV + [| CaseV ("SUB", [some "FINAL"; listV [||]; desctype]) |] |> listV ]); natV Z.zero ]) in let tidx = CaseV ("", [ natV Z.zero ]) in diff --git a/spectec/src/backend-interpreter/interpreter.ml b/spectec/src/backend-interpreter/interpreter.ml index b3b419ca4..17b659956 100644 --- a/spectec/src/backend-interpreter/interpreter.ml +++ b/spectec/src/backend-interpreter/interpreter.ml @@ -192,6 +192,9 @@ and check_type ty v expr = (* absheaptype *) | CaseV (aht, []) when List.mem aht abs_heaptypes -> boolV (ty = "absheaptype" || ty = "heaptype") + (* concrete heaptype *) + | CaseV ("_HT", [ _ ]) -> + boolV (ty = "heaptype") (* deftype *) | CaseV ("_DEF", [ _; _ ]) -> boolV (ty = "heaptype" || ty = "typeuse" || ty = "deftype") @@ -201,6 +204,11 @@ and check_type ty v expr = (* heaptype *) | CaseV ("REC", [ _ ]) -> boolV (ty = "heaptype" || ty = "typeuse" || ty = "typevar") + (* exactdeftype / exacttypeuse *) + | CaseV ("", [ OptV _; CaseV ("_DEF", [ _; _ ]) ]) -> + boolV (ty = "exactdeftype" || ty = "exacttypeuse") + | CaseV ("", [ OptV _; CaseV (("_IDX" | "REC"), [ _ ]) ]) -> + boolV (ty = "exacttypeuse") (* packval *) | CaseV ("PACK", CaseV (pt, [])::_) when List.mem pt pnn_types -> boolV (ty = "val") diff --git a/spectec/src/backend-interpreter/relation.ml b/spectec/src/backend-interpreter/relation.ml index fe8a5cd32..12447809c 100644 --- a/spectec/src/backend-interpreter/relation.ml +++ b/spectec/src/backend-interpreter/relation.ml @@ -27,7 +27,11 @@ let ref_ok = let field_name = String.sub name 4 (String.length name - 9) in let object_ = listv_nth (Ds.Store.access (field_name ^ "S")) (Z.to_int i) in let dt = strv_access "TYPE" object_ in - CaseV ("REF", [ nonull; dt]) + let ht = + if !Construct.version <= 3 then dt + else CaseV ("_HT", [ CaseV ("", [ some "EXACT"; dt ]) ]) + in + CaseV ("REF", [ nonull; ht ]) (* extern *) (* TODO: check null *) | CaseV ("REF.EXTERN", [ _ ]) -> CaseV ("REF", [ nonull; nullary "EXTERN"]) @@ -44,7 +48,7 @@ let ref_ok = | vs -> Numerics.error_values "$Ref_ok" vs let module_ok v = - if !Construct.version <> 3 then failwith "This hardcoded function ($Module_ok) should be only called with test version 3.0"; + if !Construct.version < 3 then failwith "This hardcoded function ($Module_ok) should be only called with test version >= 3.0"; match v with | [ m ] -> (try @@ -68,7 +72,13 @@ let externaddr_ok = function |> unwrap_listv_to_array |> fun arr -> Array.get arr addr |> strv_access "TYPE" - |> fun type_ -> CaseV (name, [type_]) + |> fun type_ -> + let arg = + if name = "FUNC" && !Construct.version > 3 then + CaseV ("", [ some "EXACT"; type_ ]) + else type_ + in + CaseV (name, [ arg ]) |> Construct.al_to_externtype in let externtype = Construct.al_to_externtype t in diff --git a/spectec/src/backend-interpreter/runner.ml b/spectec/src/backend-interpreter/runner.ml index e5a925b3e..8d9b0978c 100644 --- a/spectec/src/backend-interpreter/runner.ml +++ b/spectec/src/backend-interpreter/runner.ml @@ -200,14 +200,14 @@ let test_assertion assertion = | exception Exception.Throw -> success | _ -> Assert.error assertion.at "expected exception" ) - | AssertInvalid (def, re) when !Construct.version = 3 -> + | AssertInvalid (def, re) when !Construct.version >= 3 -> (match def |> module_of_def |> instantiate |> ignore with | exception Exception.Invalid _ -> success | _ -> Run.assert_message assertion.at "validation" "module instance" re; fail ) - | AssertInvalidCustom (def, re) when !Construct.version = 3 -> + | AssertInvalidCustom (def, re) when !Construct.version >= 3 -> (match def |> module_of_def |> instantiate |> ignore with | exception Exception.Invalid _ -> success | _ -> @@ -371,6 +371,7 @@ and run_dir path = path |> Sys.readdir |> Array.to_list + |> List.filter (fun filename -> not (!Construct.version <= 3 && filename = "custom-descriptors")) |> List.sort compare |> List.map (fun filename -> run_file (Filename.concat path filename) []) |> sum_results_with_time diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 13f4ac05e..fbfc483e5 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; Il2al.Translate.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: 4)"; "-help", Arg.Unit ignore, ""; "--help", Arg.Unit ignore, ""; diff --git a/spectec/src/il2al/postprocess.ml b/spectec/src/il2al/postprocess.ml index 9192e2daa..52b043415 100644 --- a/spectec/src/il2al/postprocess.ml +++ b/spectec/src/il2al/postprocess.ml @@ -93,9 +93,16 @@ let split_iter s = String.sub s 0 last, String.sub s last (len - last) let replace_name old_name new_name algo = - let replace_name' walker e = + let replace_name' (walker: Walk.walker) e = match e.it with | VarE x when x = old_name -> {e with it = VarE new_name} + | IterE (inner_e, (iter, xes)) -> + let xes' = + List.map + (fun (x, e) -> (if x = old_name then new_name else x), walker.walk_expr walker e) + xes + in + {e with it = IterE (walker.walk_expr walker inner_e, (walker.walk_iter walker iter, xes'))} | _ -> Walk.base_walker.walk_expr walker e in let walker = {Walk.base_walker with walk_expr = replace_name'} in diff --git a/spectec/src/il2al/translate.ml b/spectec/src/il2al/translate.ml index b00795857..83563552f 100644 --- a/spectec/src/il2al/translate.ml +++ b/spectec/src/il2al/translate.ml @@ -16,7 +16,7 @@ struct include Print end -let version = ref 3 +let version = ref 4 (* Errors *) diff --git a/spectec/test-interpreter/TEST.md b/spectec/test-interpreter/TEST.md index 1540225f4..29fa8901e 100644 --- a/spectec/test-interpreter/TEST.md +++ b/spectec/test-interpreter/TEST.md @@ -40,7 +40,9 @@ spectec 0.5 generator $ for v in 1 2 3; do ( \ > echo "Running test for Wasm $v.0..." && \ > ../src/exe-spectec/main.exe ../../../_specification/wasm-$v.0/*.spectec -v -l --test-version $v --interpreter ../test-interpreter/spec-test-$v \ -> ) done 2>&1 +> ) done 2>&1 && \ +> echo "Running test for Wasm latest..." && \ +> ../src/exe-spectec/main.exe ../../../_specification/wasm-latest/*.spectec -v -l --interpreter ../test-interpreter/spec-test-3 2>&1 Running test for Wasm 1.0... spectec 0.5 generator == Parsing... @@ -135,4 +137,34 @@ spectec 0.5 generator - print_i32: 2 - print: () == Complete. +Running test for Wasm latest... +spectec 0.5 generator +== Parsing... +== Elaboration... +== IL Validation... +== Running pass sideconditions... +== IL Validation after pass sideconditions... +== Translating to AL... +== Initializing interpreter... +== Interpreting... +- print_i32: 83 +- print_i32: 13 +- print_i32_f32: 14 42 +- print_i32: 13 +- print_i32: 13 +- print_f32: 13 +- print_i32: 13 +- print_i64: 24 +- print_f64_f64: 25 53 +- print_i64: 24 +- print_f64: 24 +- print_f64: 24 +- print_f64: 24 +- print_i32: 13 +- print_i32: 42 +- print_i32: 123 +- print_i32: 1 +- print_i32: 2 +- print: () +== Complete. ``` From 8b06bdffb253b2a76c11dae987bc34a14309fdbb Mon Sep 17 00:00:00 2001 From: Thomas Lively Date: Wed, 4 Nov 2026 07:49:36 -0800 Subject: [PATCH 2/2] update tests --- spectec/test-middlend/TEST.md | 7510 +++++++++++++++++++-------------- 1 file changed, 4288 insertions(+), 3222 deletions(-) diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index a636e157c..7d4a6a32b 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -550,6 +550,10 @@ def $free_externidx(externidx : externidx) : free syntax null = | NULL +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec +syntax exact = + | EXACT + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax addrtype = | I32 @@ -601,13 +605,17 @@ syntax final = ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:37.1-38.43 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:41.1-42.43 syntax typeuse = | _IDX(typeidx) | _DEF(rectype : rectype, n : n) | REC(n) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:43.1-44.26 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:44.1-44.65 +syntax exacttypeuse = + | `%%`(`exact?` : exact?, typeuse : typeuse) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:49.1-50.48 syntax heaptype = | ANY | EQ @@ -622,11 +630,9 @@ syntax heaptype = | EXTERN | NOEXTERN | BOT - | _IDX(typeidx) - | _DEF(rectype : rectype, n : n) - | REC(n) + | _HT(exacttypeuse) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:51.1-52.14 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:57.1-58.14 syntax valtype = | I32 | I64 @@ -636,7 +642,7 @@ syntax valtype = | REF(`null?` : null?, heaptype : heaptype) | BOT -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:92.1-92.66 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:98.1-98.66 syntax storagetype = | I32 | I64 @@ -648,24 +654,36 @@ syntax storagetype = | I8 | I16 -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:102.1-103.16 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:108.1-109.16 syntax resulttype = list(syntax valtype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:112.1-112.61 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:118.1-118.61 syntax fieldtype = | `%%`(`mut?` : mut?, storagetype : storagetype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:114.1-117.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:120.1-123.34 syntax comptype = | STRUCT(list(syntax fieldtype)) | ARRAY(fieldtype) | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:119.1-120.33 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:125.1-125.88 +syntax describes = + | DESCRIBES(typeuse) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:126.1-126.91 +syntax descriptor = + | DESCRIPTOR(typeuse) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:128.1-129.36 +syntax desctype = + | `%%%`(`describes?` : describes?, `descriptor?` : descriptor?, comptype : comptype) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:131.1-132.33 syntax subtype = - | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) + | SUB(`final?` : final?, `typeuse*` : typeuse*, desctype : desctype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:122.1-123.22 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:134.1-135.22 syntax rectype = | REC(list(syntax subtype)) } @@ -674,6 +692,10 @@ syntax rectype = syntax deftype = | _DEF(rectype : rectype, n : n) +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec +syntax exactdeftype = + | `%%`(`exact?` : exact?, deftype : deftype) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax typevar = | _IDX(typeidx) @@ -830,7 +852,7 @@ syntax externtype = | GLOBAL(globaltype) | MEM(memtype) | TABLE(tabletype) - | FUNC(typeuse) + | FUNC(exacttypeuse) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax moduletype = @@ -1047,13 +1069,13 @@ def $as_deftype(typeuse : typeuse) : deftype ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:324.1-324.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:330.1-330.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:331.1-331.44 def $tagsxt{jt : tagtype, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:332.1-332.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -1061,13 +1083,13 @@ def $tagsxt(externtype*) : tagtype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:325.1-325.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:334.1-334.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:335.1-335.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:336.1-336.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -1075,13 +1097,13 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:326.1-326.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:338.1-338.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:339.1-339.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:340.1-340.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -1089,13 +1111,13 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:327.1-327.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:342.1-342.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:343.1-343.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:344.1-344.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) -- otherwise } @@ -1103,13 +1125,13 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:312.1-312.88 -def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:330.1-330.24 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:328.1-328.88 +def $funcsxt(externtype*) : exactdeftype* + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:346.1-346.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype(dt : deftype <: typeuse)] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:347.1-347.49 + def $funcsxt{edt : exactdeftype, `xt*` : externtype*}([FUNC_externtype(edt : exactdeftype <: exacttypeuse)] ++ xt*{xt <- `xt*`}) = [edt] ++ $funcsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:348.1-348.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -1117,14 +1139,14 @@ def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:353.1-353.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:384.1-384.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:385.1-385.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = tu_1 -- if (tv = tv_1) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:367.1-367.92 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:386.1-386.92 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) -- otherwise } @@ -1132,13 +1154,13 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:425.1-425.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:426.1-426.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:427.1-427.63 def $minus_recs{n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:428.1-429.45 def $minus_recs{x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) } @@ -1161,74 +1183,87 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:354.1-354.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:388.1-388.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:389.1-389.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:359.1-359.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:395.1-395.89 + def $subst_heaptype{`exact?` : exact?, tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(_HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, tu')), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:396.1-396.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -- otherwise -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:360.1-360.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:398.1-398.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:361.1-361.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:400.1-400.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:401.1-401.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:402.1-402.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-latest/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:403.1-403.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:364.1-364.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:407.1-407.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:408.1-408.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:365.1-365.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:410.1-410.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:366.1-366.112 +def $subst_describes(describes : describes, typevar*, typeuse*) : describes + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:416.1-416.88 + def $subst_describes{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(DESCRIBES_describes(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = DESCRIBES_describes($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:367.1-367.112 +def $subst_descriptor(descriptor : descriptor, typevar*, typeuse*) : descriptor + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:417.1-417.91 + def $subst_descriptor{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(DESCRIPTOR_descriptor(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = DESCRIPTOR_descriptor($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:369.1-369.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:412.1-412.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`},)) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:413.1-413.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:414.1-414.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-latest/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:370.1-370.112 +def $subst_desctype(desctype : desctype, typevar*, typeuse*) : desctype + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:419.1-420.99 + def $subst_desctype{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_desctype($subst_describes(dcs, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})?{dcs <- `dcs?`}, $subst_descriptor(dcr, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})?{dcr <- `dcr?`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:371.1-371.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-latest/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*`})) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:422.1-423.75 + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, dct : desctype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, dct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_desctype(dct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:372.1-372.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:431.1-432.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`},)) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:373.1-373.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:437.1-437.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) } @@ -1268,7 +1303,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{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*`})) + def $subst_externtype{`exact?` : exact?, tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, tu')), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, $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 @@ -1323,11 +1358,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:475.1-475.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:476.1-476.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:477.1-477.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -1404,75 +1439,90 @@ def $free_typevar(typevar : typevar) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:481.1-481.36 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:505.1-505.36 def $free_heaptype(heaptype : heaptype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:529.1-529.65 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:556.1-556.65 def $free_heaptype{absheaptype : absheaptype}((absheaptype : absheaptype <: heaptype)) = $free_absheaptype(absheaptype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:530.1-530.53 - def $free_heaptype{typeuse : typeuse}((typeuse : typeuse <: heaptype)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:557.1-557.64 + def $free_heaptype{typeuse : typeuse}(_HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, typeuse))) = $free_typeuse(typeuse) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:482.1-482.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:506.1-506.34 def $free_reftype(reftype : reftype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:532.1-532.65 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:559.1-559.65 def $free_reftype{`null?` : null?, heaptype : heaptype}(REF_reftype(null?{null <- `null?`}, heaptype)) = $free_heaptype(heaptype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:484.1-484.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:508.1-508.34 def $free_typeuse(typeuse : typeuse) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:526.1-526.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:553.1-553.52 def $free_typeuse{typevar : typevar}((typevar : typevar <: typeuse)) = $free_typevar(typevar) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:527.1-527.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:554.1-554.52 def $free_typeuse{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:485.1-485.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:509.1-509.34 def $free_valtype(valtype : valtype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:534.1-534.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:561.1-561.52 def $free_valtype{numtype : numtype}((numtype : numtype <: valtype)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:535.1-535.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:562.1-562.52 def $free_valtype{vectype : vectype}((vectype : vectype <: valtype)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:536.1-536.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:563.1-563.52 def $free_valtype{reftype : reftype}((reftype : reftype <: valtype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:537.1-537.28 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:564.1-564.28 def $free_valtype(BOT_valtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:487.1-487.40 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:511.1-511.40 def $free_resulttype(resulttype : resulttype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:539.1-539.69 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:566.1-566.69 def $free_resulttype{`valtype*` : valtype*}(`%`_resulttype(valtype*{valtype <- `valtype*`},)) = $free_list($free_valtype(valtype)*{valtype <- `valtype*`}) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:488.1-488.42 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:512.1-512.42 def $free_storagetype(storagetype : storagetype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:541.1-541.56 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:568.1-568.56 def $free_storagetype{valtype : valtype}((valtype : valtype <: storagetype)) = $free_valtype(valtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:542.1-542.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:569.1-569.59 def $free_storagetype{packtype : packtype}((packtype : packtype <: storagetype)) = $free_packtype(packtype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:489.1-489.38 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:513.1-513.38 def $free_fieldtype(fieldtype : fieldtype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:544.1-544.71 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:571.1-571.71 def $free_fieldtype{`mut?` : mut?, storagetype : storagetype}(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) = $free_storagetype(storagetype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:490.1-490.36 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:514.1-514.36 def $free_comptype(comptype : comptype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:546.1-546.80 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:573.1-573.80 def $free_comptype{`fieldtype*` : fieldtype*}(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) = $free_list($free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:547.1-547.65 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:574.1-574.65 def $free_comptype{fieldtype : fieldtype}(ARRAY_comptype(fieldtype)) = $free_fieldtype(fieldtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:548.1-548.121 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:575.1-575.121 def $free_comptype{resulttype_1 : resulttype, resulttype_2 : resulttype}(`FUNC%->%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:491.1-491.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:515.1-515.38 +def $free_describes(describes : describes) : free + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:577.1-577.54 + def $free_describes{tu : typeuse}(DESCRIBES_describes(tu)) = $free_typeuse(tu) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:516.1-516.40 +def $free_descriptor(descriptor : descriptor) : free + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:578.1-578.56 + def $free_descriptor{tu : typeuse}(DESCRIPTOR_descriptor(tu)) = $free_typeuse(tu) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:517.1-517.36 +def $free_desctype(desctype : desctype) : free + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:580.1-581.94 + def $free_desctype{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype}(`%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct)) = $free_opt($free_describes(dcs)?{dcs <- `dcs?`}) +++ $free_opt($free_descriptor(dcr)?{dcr <- `dcr?`}) +++ $free_comptype(ct) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:518.1-518.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:550.1-551.66 - def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:583.1-584.61 + def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, dct : desctype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, dct)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_desctype(dct) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:492.1-492.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:519.1-519.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:553.1-553.70 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:586.1-586.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:520.1-520.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:547.1-547.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:521.1-521.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:548.1-548.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -1517,7 +1567,7 @@ def $free_externtype(externtype : externtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + def $free_externtype{`exact?` : exact?, typeuse : typeuse}(FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, typeuse))) = $free_typeuse(typeuse) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_moduletype(moduletype : moduletype) : free @@ -2071,6 +2121,8 @@ syntax instr = | BR_ON_NON_NULL(labelidx) | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_DESC_EQ(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_DESC_EQ_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) | CALL(funcidx) | CALL_REF(typeuse) | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) @@ -2110,13 +2162,17 @@ syntax instr = | `REF.IS_NULL` | `REF.AS_NON_NULL` | `REF.EQ` + | `REF.GET_DESC`(typeidx) | `REF.TEST`(reftype) | `REF.CAST`(reftype) + | `REF.CAST_DESC_EQ`(reftype) | `REF.FUNC`(funcidx) | `REF.I31` | `I31.GET`(sx) | `STRUCT.NEW`(typeidx) | `STRUCT.NEW_DEFAULT`(typeidx) + | `STRUCT.NEW_DESC`(typeidx) + | `STRUCT.NEW_DEFAULT_DESC`(typeidx) | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) | `ARRAY.NEW`(typeidx) @@ -2219,233 +2275,245 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-585.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:599.1-599.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:586.1-586.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:600.1-600.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-587.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:601.1-601.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:588.1-588.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:602.1-602.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:421.1-421.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:427.1-427.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.26 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-442.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-437.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:443.1-443.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:438.1-438.27 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:444.1-444.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:439.1-439.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.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:441.1-441.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-447.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:442.1-442.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:448.1-448.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:443.1-444.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:449.1-450.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:446.1-446.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-447.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-453.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:448.1-449.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:454.1-455.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:450.1-450.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-451.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-453.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.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:454.1-455.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-461.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:457.1-457.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-463.83 + def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_DESC_EQ_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:464.1-465.83 + def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_DESC_EQ_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:467.1-467.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-458.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-468.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:459.1-460.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:469.1-470.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:461.1-461.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-465.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-475.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:467.1-467.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.53 def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-468.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.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:469.1-470.99 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-480.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:472.1-472.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-483.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:484.1-484.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:485.1-485.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:486.1-486.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-478.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:487.1-488.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:480.1-480.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:490.1-490.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:491.1-491.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-483.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-493.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:484.1-484.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:494.1-494.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:485.1-485.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:486.1-486.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:496.1-496.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:487.1-487.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:488.1-488.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:489.1-489.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:490.1-490.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.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:491.1-491.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.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:493.1-493.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.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:494.1-495.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-505.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:496.1-497.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-507.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:498.1-499.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-509.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:500.1-501.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-511.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:502.1-503.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:512.1-513.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:504.1-504.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:505.1-505.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.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:506.1-506.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-516.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.62 def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.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:510.1-510.38 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.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:511.1-511.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.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:512.1-512.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.63 + def $free_instr{typeidx : typeidx}(`REF.GET_DESC`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.67 + def $free_instr{reftype : reftype}(`REF.CAST_DESC_EQ`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:526.1-526.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.30 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:527.1-527.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:517.1-517.33 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:529.1-529.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:519.1-519.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.61 def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.66 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DESC`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.74 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT_DESC`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.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:522.1-522.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-538.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:526.1-526.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:540.1-540.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:527.1-528.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-542.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:529.1-530.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-544.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:531.1-531.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.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:532.1-532.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-546.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:547.1-547.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:534.1-534.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-548.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-536.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-550.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:537.1-538.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:551.1-552.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:539.1-540.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-554.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:542.1-542.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-556.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:543.1-543.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:557.1-557.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:545.1-545.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:559.1-559.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-546.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:560.1-560.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:547.1-547.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:561.1-561.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-549.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-563.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:550.1-550.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-552.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-553.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-567.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:554.1-554.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:568.1-568.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:555.1-555.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-569.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-556.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:570.1-570.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:557.1-558.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-572.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:559.1-560.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:573.1-574.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:561.1-561.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-564.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.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:565.1-566.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.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:567.1-568.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:581.1-582.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:569.1-570.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:583.1-584.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:571.1-572.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-586.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:573.1-574.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-588.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:575.1-575.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:589.1-589.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:590.1-590.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-577.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:591.1-591.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:578.1-579.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:592.1-593.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:580.1-581.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:594.1-595.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:582.1-582.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:596.1-596.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:422.1-422.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:428.1-428.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:590.1-591.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:604.1-605.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*`})) } @@ -2630,7 +2698,7 @@ syntax context = GLOBALS globaltype*, MEMS memtype*, TABLES tabletype*, - FUNCS deftype*, + FUNCS exactdeftype*, DATAS datatype*, ELEMS elemtype*, LOCALS localtype*, @@ -2730,9 +2798,9 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*, `dcs?` : describes?, `dcr?` : descriptor?}: `%~~%`(deftype, comptype) - -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, comptype))) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -2751,11 +2819,11 @@ def $before(typeuse : typeuse, nat : nat) : bool ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec - def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + def $unrollht_{C : context, deftype : deftype}(C, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, (deftype : deftype <: typeuse)))) = $unrolldt(deftype) ;; ../../../../specification/wasm-latest/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, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, _IDX_typeuse(typeidx)))) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) ;; ../../../../specification/wasm-latest/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, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, REC_typeuse(i)))) = C.RECS_context[i] ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { @@ -2768,7 +2836,7 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: - `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + `%|-%:OK`(C, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, typeuse))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:27.1-28.16 @@ -2805,17 +2873,17 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:106.1-108.30 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:113.1-115.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_typeidx.0] = dt) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:110.1-112.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:117.1-119.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:114.1-116.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:121.1-123.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) @@ -2827,106 +2895,130 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:92.1-92.104 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:97.1-97.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:130.1-132.43 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:137.1-139.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:93.1-93.106 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:98.1-98.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:122.1-124.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:129.1-131.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:126.1-128.37 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:133.1-135.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:94.1-94.103 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:99.1-99.103 relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:135.1-137.42 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:142.1-144.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:139.1-141.39 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:146.1-148.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:143.1-146.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:150.1-153.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:97.1-97.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:100.1-100.103 +relation Desctype_ok: `%|-%:OK`(context, desctype) + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:156.1-164.31 + rule _{C : context, `tu_1?` : typeuse?, `tu_2?` : typeuse?, ct : comptype, `ft*` : fieldtype*}: + `%|-%:OK`(C, `%%%`_desctype(DESCRIBES_describes(tu_1)?{tu_1 <- `tu_1?`}, DESCRIPTOR_descriptor(tu_2)?{tu_2 <- `tu_2?`}, ct)) + -- (Typeuse_ok: `%|-%:OK`(C, tu_1))?{tu_1 <- `tu_1?`} + -- if ((tu_1?{tu_1 <- `tu_1?`} = ?()) \/ (ct = STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)))) + -- (Typeuse_ok: `%|-%:OK`(C, tu_2))?{tu_2 <- `tu_2?`} + -- if ((tu_2?{tu_2 <- `tu_2?`} = ?()) \/ (ct = STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)))) + -- Comptype_ok: `%|-%:OK`(C, ct) + +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:103.1-103.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:167.1-176.49 - rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) - -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) - -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} - -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} - -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:98.1-98.126 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:193.1-209.39 + rule _{C : context, `final?` : final?, `tu*` : typeuse*, dct : desctype, i : nat, `dct'*` : desctype*, `tu'**` : typeuse**, `i_1?` : n?, `i_2?` : n?, ct : comptype, `ct_1?` : comptype?, `dcs_1??` : describes??, `tu_1*?` : typeuse*?, `ct_2?` : comptype?, `dcr_2??` : descriptor??, `tu_2*?` : typeuse*?}: + `%|-%:%`(C, SUB_subtype(final?{final <- `final?`}, tu*{tu <- `tu*`}, dct), OK_oktypenat(i)) + -- if (|tu*{tu <- `tu*`}| <= 1) + -- (Typeuse_ok: `%|-%:OK`(C, tu))*{tu <- `tu*`} + -- (if $before(tu, i))*{tu <- `tu*`} + -- (if ($unrollht_(C, _HT_heaptype(`%%`_exacttypeuse(?(), tu))) = SUB_subtype(?(), tu'*{tu' <- `tu'*`}, dct')))*{dct' <- `dct'*`, tu <- `tu*`, `tu'*` <- `tu'**`} + -- if (dct = `%%%`_desctype(DESCRIBES_describes(REC_typeuse(i_1))?{i_1 <- `i_1?`}, DESCRIPTOR_descriptor(REC_typeuse(i_2))?{i_2 <- `i_2?`}, ct)) + -- (if (i_1 < i))?{i_1 <- `i_1?`} + -- (if (C.RECS_context[i_1] = SUB_subtype(final?{final <- `final?`}, tu_1*{tu_1 <- `tu_1*`}, `%%%`_desctype(dcs_1?{dcs_1 <- `dcs_1?`}, ?(DESCRIPTOR_descriptor(REC_typeuse(i))), ct_1))))?{ct_1 <- `ct_1?`, `dcs_1?` <- `dcs_1??`, i_1 <- `i_1?`, `tu_1*` <- `tu_1*?`} + -- (if (C.RECS_context[i_2] = SUB_subtype(final?{final <- `final?`}, tu_2*{tu_2 <- `tu_2*`}, `%%%`_desctype(?(DESCRIBES_describes(REC_typeuse(i))), dcr_2?{dcr_2 <- `dcr_2?`}, ct_2))))?{ct_2 <- `ct_2?`, `dcr_2?` <- `dcr_2??`, i_2 <- `i_2?`, `tu_2*` <- `tu_2*?`} + -- Desctype_ok: `%|-%:OK`(C, dct) + -- (Desctype_sub: `%|-%<:%`(C, dct, dct'))*{dct' <- `dct'*`} + +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:104.1-104.126 relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:188.1-189.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:221.1-222.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypenat(i)) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:191.1-194.49 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:224.1-227.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`},)), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},)), OK_oktypenat(i + 1)) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:99.1-99.102 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:105.1-105.102 relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:197.1-201.14 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:230.1-234.14 rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`},))) -- if (i < n) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:102.1-102.108 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:108.1-108.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:181.1-183.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:186.1-188.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:185.1-187.38 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:190.1-192.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:189.1-192.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:194.1-197.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:103.1-103.107 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:109.1-109.108 +relation Desctype_sub: `%|-%<:%`(context, desctype, desctype) + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:199.1-203.37 + rule _{C : context, `tu_11?` : typeuse?, `tu_12?` : typeuse?, ct_1 : comptype, `tu_21?` : typeuse?, `tu_22?` : typeuse?, ct_2 : comptype}: + `%|-%<:%`(C, `%%%`_desctype(DESCRIBES_describes(tu_11)?{tu_11 <- `tu_11?`}, DESCRIPTOR_descriptor(tu_12)?{tu_12 <- `tu_12?`}, ct_1), `%%%`_desctype(DESCRIBES_describes(tu_21)?{tu_21 <- `tu_21?`}, DESCRIPTOR_descriptor(tu_22)?{tu_22 <- `tu_22?`}, ct_2)) + -- (Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), tu_11)), _HT_heaptype(`%%`_exacttypeuse(?(), tu_21))))?{tu_11 <- `tu_11?`, tu_21 <- `tu_21?`} + -- (Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), tu_12)), _HT_heaptype(`%%`_exacttypeuse(?(), tu_22))))?{tu_12 <- `tu_12?`, tu_22 <- `tu_22?`} + -- Comptype_sub: `%|-%<:%`(C, ct_1, ct_2) + +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:110.1-110.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:195.1-197.66 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:206.1-208.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:199.1-202.49 - rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:210.1-213.57 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, desctype : desctype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) - -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) + -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, desctype)) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), typeuse*{typeuse <- `typeuse*`}[i])), _HT_heaptype(`%%`_exacttypeuse(?(), (deftype_2 : deftype <: typeuse)))) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:9.1-9.104 relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) @@ -2934,167 +3026,172 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:23.1-27.48 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:23.1-25.48 + rule `exact-l`{C : context, typeuse : typeuse, heaptype : heaptype}: + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), typeuse)), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), typeuse)), heaptype) + + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:27.1-31.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:29.1-30.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:33.1-34.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:32.1-33.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:36.1-37.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:35.1-36.20 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:39.1-40.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:38.1-39.19 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:42.1-43.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:41.1-43.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:45.1-47.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype : deftype <: typeuse))), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:45.1-47.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:49.1-51.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype : deftype <: typeuse))), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:49.1-51.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:53.1-55.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype : deftype <: typeuse))), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:53.1-55.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:57.1-59.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype_1 : deftype <: typeuse))), _HT_heaptype(`%%`_exacttypeuse(?(), (deftype_2 : deftype <: typeuse)))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:57.1-59.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:61.1-63.57 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, _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(typeidx))), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: typeuse))), heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:61.1-63.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:65.1-67.57 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, _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(typeidx)))) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, _HT_heaptype(`%%`_exacttypeuse(?(), (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: typeuse)))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:65.1-67.51 - rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: - `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) - -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},)))) + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-71.63 + rule `rec-struct`{C : context, i : n, `final?` : final?, `dcs?` : describes?, `dcr?` : descriptor?, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), STRUCT_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-71.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.49 rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: - `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) - -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), ARRAY_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `%%%`_desctype(?(), ?(), ARRAY_comptype(fieldtype)))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.51 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:77.1-79.51 rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) - -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)))) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), FUNC_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `%%%`_desctype(?(), ?(), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:77.1-79.43 - rule `rec-sub`{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-latest/2.2-validation.subtyping.spectec:81.1-83.49 + rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, desctype : desctype}: + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), _HT_heaptype(`%%`_exacttypeuse(?(), typeuse*{typeuse <- `typeuse*`}[j]))) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, desctype)) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-84.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:85.1-88.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:86.1-89.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:90.1-93.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:91.1-94.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:95.1-98.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:96.1-99.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:100.1-103.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:101.1-102.23 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:105.1-106.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:105.1-107.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:109.1-111.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:109.1-111.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:113.1-115.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:114.1-116.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:118.1-120.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:118.1-120.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:122.1-124.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:122.1-124.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:126.1-128.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:126.1-127.22 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:130.1-131.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:132.1-132.115 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:136.1-136.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:135.1-137.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:139.1-141.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:150.1-150.119 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:154.1-154.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:162.1-164.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:167.1-169.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:166.1-168.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:171.1-173.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:151.1-151.117 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:155.1-155.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:171.1-173.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:176.1-178.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:175.1-178.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:180.1-183.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) @@ -3129,6 +3226,13 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec +relation Expand_desc: `%~%`(deftype, desctype) + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec + rule _{deftype : deftype, desctype : desctype, `final?` : final?, `typeuse*` : typeuse*}: + `%~%`(deftype, desctype) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, desctype)) + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec syntax oktypeidx = | OK(typeidx) @@ -3136,24 +3240,28 @@ syntax oktypeidx = ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + rule _{C : context, `final?` : final?, `x*` : idx*, dct : desctype, x_0 : idx, `dct'*` : desctype*, `yy**` : typeuse**, `x_1?` : idx?, `x_2?` : idx?, ct : comptype, `ct_1?` : comptype?, `dcs_1??` : describes??, `yy_1*?` : typeuse*?, `ct_2?` : comptype?, `dcr_2??` : descriptor??, `yy_2*?` : typeuse*?}: + `%|-%:%`(C, SUB_subtype(final?{final <- `final?`}, _IDX_typeuse(x)*{x <- `x*`}, dct), 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(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- (if ($unrolldt(C.TYPES_context[x!`%`_idx.0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, dct')))*{dct' <- `dct'*`, x <- `x*`, `yy*` <- `yy**`} + -- if (dct = `%%%`_desctype(DESCRIBES_describes(_IDX_typeuse(x_1))?{x_1 <- `x_1?`}, DESCRIPTOR_descriptor(_IDX_typeuse(x_2))?{x_2 <- `x_2?`}, ct)) + -- (if (x_1!`%`_idx.0 < x_0!`%`_idx.0))?{x_1 <- `x_1?`} + -- (if ($unrolldt(C.TYPES_context[x_1!`%`_idx.0]) = SUB_subtype(final?{final <- `final?`}, yy_1*{yy_1 <- `yy_1*`}, `%%%`_desctype(dcs_1?{dcs_1 <- `dcs_1?`}, ?(DESCRIPTOR_descriptor(C.TYPES_context[x_0!`%`_idx.0] : deftype <: typeuse)), ct_1))))?{ct_1 <- `ct_1?`, `dcs_1?` <- `dcs_1??`, x_1 <- `x_1?`, `yy_1*` <- `yy_1*?`} + -- (if ($unrolldt(C.TYPES_context[x_2!`%`_idx.0]) = SUB_subtype(final?{final <- `final?`}, yy_2*{yy_2 <- `yy_2*`}, `%%%`_desctype(?(DESCRIBES_describes(C.TYPES_context[x_0!`%`_idx.0] : deftype <: typeuse)), dcr_2?{dcr_2 <- `dcr_2?`}, ct_2))))?{ct_2 <- `ct_2?`, `dcr_2?` <- `dcr_2??`, x_2 <- `x_2?`, `yy_2*` <- `yy_2*?`} + -- Desctype_ok: `%|-%:OK`(C, dct) + -- (Desctype_sub: `%|-%<:%`(C, dct, dct'))*{dct' <- `dct'*`} ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:96.1-96.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:102.1-102.126 relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:179.1-180.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:212.1-213.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypeidx(x)) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:182.1-185.48 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:215.1-218.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)) @@ -3221,8 +3329,8 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-latest/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, `exact?` : exact?, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, 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*`},))) @@ -3309,9 +3417,9 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec - rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, FUNC_externtype(deftype_1 : deftype <: typeuse), FUNC_externtype(deftype_2 : deftype <: typeuse)) - -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + rule func{C : context, exactdeftype_1 : exactdeftype, exactdeftype_2 : exactdeftype}: + `%|-%<:%`(C, FUNC_externtype(exactdeftype_1 : exactdeftype <: exacttypeuse), FUNC_externtype(exactdeftype_2 : exactdeftype <: exacttypeuse)) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(exactdeftype_1 : exactdeftype <: exacttypeuse), _HT_heaptype(exactdeftype_2 : exactdeftype <: exacttypeuse)) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -3461,64 +3569,94 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(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-latest/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}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:96.1-105.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, rt_3 : 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_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - ;; ../../../../specification/wasm-latest/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}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:107.1-116.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, rt_3 : 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_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:115.1-117.45 - rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:118.1-128.34 + rule br_on_cast_desc_eq{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, `exact?` : exact?, y : idx, rt : reftype, `null?` : null?, x : idx, `dcs?` : describes?, ct : comptype, rt_3 : reftype}: + `%|-%:%`(C, BR_ON_CAST_DESC_EQ_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype) REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],), [], `%`_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)],)) + -- if (rt_2 = REF_reftype(null?{null <- `null?`}, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:130.1-140.49 + rule br_on_cast_desc_eq_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, `exact?` : exact?, y : idx, rt : reftype, `null?` : null?, x : idx, `dcs?` : describes?, ct : comptype, rt_3 : reftype}: + `%|-%:%`(C, BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype) REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)],))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)],)) + -- if (rt_2 = REF_reftype(null?{null <- `null?`}, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:145.1-148.37 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*, `exact?` : exact?, dt : deftype}: `%|-%:%`(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*`},))) + -- if (C.FUNCS_context[x!`%`_idx.0] = `%%`_exactdeftype(exact?{exact <- `exact?`}, dt)) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:119.1-121.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:150.1-152.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*`},))) + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:123.1-127.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:154.1-158.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:129.1-132.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:160.1-163.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/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*}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:166.1-172.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `exact?` : exact?, dt : deftype, `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.FUNCS_context[x!`%`_idx.0] = `%%`_exactdeftype(exact?{exact <- `exact?`}, dt)) + -- Expand: `%~~%`(dt, `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-latest/2.3-validation.instructions.spectec:143.1-148.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:175.1-180.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*`},))) + `%|-%:%`(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), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:151.1-159.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:183.1-191.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)) @@ -3528,484 +3666,508 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- 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-latest/2.3-validation.instructions.spectec:166.1-169.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:198.1-201.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:171.1-173.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:203.1-205.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:175.1-179.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:207.1-211.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 [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ 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-latest/2.3-validation.instructions.spectec:202.1-204.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:234.1-236.31 rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-latest/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) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:238.1-241.20 + rule `ref.func`{C : context, x : idx, edt : exactdeftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(edt : exactdeftype <: exacttypeuse))],))) + -- if (C.FUNCS_context[x!`%`_idx.0] = edt) -- if (x <- C.REFS_context) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:211.1-212.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:243.1-244.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:214.1-216.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:246.1-248.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([I32_valtype],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:218.1-220.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:250.1-252.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([REF_valtype(?(), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:222.1-223.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:254.1-255.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:225.1-229.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:257.1-259.61 + rule `ref.get_desc`{C : context, x : idx, `exact?` : exact?, y : idx, `dcs?` : describes?, ct : comptype}: + `%|-%:%`(C, `REF.GET_DESC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:261.1-265.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([I32_valtype],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:231.1-235.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:267.1-271.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:240.1-241.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:273.1-279.50 + rule `ref.cast_desc_eq`{C : context, rt : reftype, ht : heaptype, `exact?` : exact?, y : idx, `null?` : null?, x : idx, `dcs?` : describes?, ct : comptype}: + `%|-%:%`(C, `REF.CAST_DESC_EQ`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht) REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],), [], `%`_resulttype([(rt : reftype <: valtype)],))) + -- if (rt = REF_reftype(null?{null <- `null?`}, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))), ht) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:284.1-285.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:246.1-248.45 - rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:290.1-292.58 + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `dcs?` : describes?, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`},), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:294.1-297.48 + rule `struct.new_default`{C : context, x : idx, `dcs?` : describes?, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:299.1-301.76 + rule `struct.new_desc`{C : context, x : idx, `zt*` : storagetype*, y : idx, `dcs?` : describes?, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW_DESC`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(y))))],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) - ;; ../../../../specification/wasm-latest/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*`},))) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:303.1-306.48 + rule `struct.new_default_desc`{C : context, x : idx, y : idx, `dcs?` : describes?, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT_DESC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(y))))],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:258.1-262.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:311.1-315.41 rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, 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)],))) + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x))))],), [], `%`_resulttype([$unpack(zt)],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},))) -- if (ft*{ft <- `ft*`}[i!`%`_fieldidx.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:264.1-267.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:317.1-320.24 rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)],), [], `%`_resulttype([],))) + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x)))) $unpack(zt)],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},))) -- if (ft*{ft <- `ft*`}[i!`%`_fieldidx.0] = `%%`_fieldtype(?(MUT_mut), zt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:272.1-274.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:325.1-327.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))],))) + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:276.1-279.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:329.1-332.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))],))) + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt),) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:281.1-283.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:334.1-336.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))],))) + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{},), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:285.1-288.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:338.1-341.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))],))) + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:290.1-294.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:343.1-347.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))],))) + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:296.1-299.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:349.1-352.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)],))) + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:301.1-303.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:354.1-356.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([],))) + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x)))) I32_valtype $unpack(zt)],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:305.1-306.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:358.1-359.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:308.1-310.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:361.1-363.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([],))) + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x)))) I32_valtype $unpack(zt) I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:312.1-316.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:365.1-369.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([],))) + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x_1)))) I32_valtype REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:318.1-321.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:371.1-374.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([],))) + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:323.1-327.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:376.1-380.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([],))) + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:332.1-334.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:385.1-387.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:336.1-338.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:389.1-391.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:343.1-345.28 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:396.1-398.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:347.1-349.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:400.1-402.29 rule `local.set`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:351.1-353.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:404.1-406.29 rule `local.tee`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:358.1-360.30 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:411.1-413.30 rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:362.1-364.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:415.1-417.29 rule `global.set`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(MUT_mut), t)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:369.1-371.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:422.1-424.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:373.1-375.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:426.1-428.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:377.1-379.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:430.1-432.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:381.1-383.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:434.1-436.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([(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 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:438.1-440.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:389.1-393.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:442.1-446.36 rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:395.1-399.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:448.1-452.36 rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_idx.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:401.1-403.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:454.1-456.24 rule `elem.drop`{C : context, x : idx, rt : reftype}: `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.ELEMS_context[x!`%`_idx.0] = rt) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:416.1-418.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:469.1-471.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:420.1-422.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:473.1-475.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:424.1-426.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:477.1-479.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:428.1-431.38 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:481.1-484.38 rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:433.1-436.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:486.1-489.24 rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:438.1-440.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:491.1-493.24 rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:451.1-454.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:504.1-507.44 rule `load-num`{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-latest/2.3-validation.instructions.spectec:456.1-459.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:509.1-512.36 rule `load-pack`{C : context, Inn : Inn, K : K, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(K,), 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, K) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:470.1-473.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:523.1-526.44 rule `store-num`{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-latest/2.3-validation.instructions.spectec:475.1-478.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:528.1-531.36 rule `store-pack`{C : context, Inn : Inn, K : K, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(K,),)), 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, K) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:480.1-483.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:533.1-536.47 rule `vload-num`{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-latest/2.3-validation.instructions.spectec:485.1-488.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:538.1-541.41 rule `vload-pack`{C : context, N : N, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(N,), M, 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, (N * M!`%`_M.0)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:490.1-493.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:543.1-546.36 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:495.1-498.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:548.1-551.36 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:500.1-504.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:553.1-557.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:506.1-509.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:559.1-562.47 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:511.1-515.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:564.1-568.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:520.1-521.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:573.1-574.33 rule const{C : context, nt : numtype, c_nt : num_(nt)}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:523.1-524.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:576.1-577.34 rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:526.1-527.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:579.1-580.39 rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:529.1-530.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:582.1-583.39 rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:532.1-533.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:585.1-586.40 rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:535.1-536.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:588.1-589.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:541.1-542.35 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:594.1-595.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:544.1-545.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:597.1-598.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:547.1-548.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:600.1-601.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:550.1-551.55 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:603.1-604.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:553.1-554.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:606.1-607.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:556.1-557.37 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:609.1-610.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:559.1-560.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:612.1-613.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:562.1-563.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:615.1-616.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:565.1-566.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:618.1-619.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:568.1-569.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:621.1-622.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:571.1-572.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:624.1-625.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:574.1-575.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:627.1-628.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:577.1-578.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:630.1-631.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:580.1-582.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:633.1-635.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:584.1-585.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:637.1-638.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:587.1-589.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:640.1-642.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:591.1-593.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:644.1-646.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:595.1-596.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:648.1-649.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:598.1-599.57 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:651.1-652.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:601.1-602.64 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:654.1-655.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:604.1-605.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:657.1-658.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:607.1-608.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:660.1-661.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:613.1-614.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:666.1-667.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:616.1-618.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:669.1-671.46 rule instr{C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, [instr], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:621.1-625.82 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:674.1-678.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_1 <- `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*`},))) -- Instrs_ok: `%|-%:%`(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*`},))) -- (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-latest/2.3-validation.instructions.spectec:627.1-631.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:680.1-684.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:634.1-637.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:687.1-690.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*`},))) @@ -4056,6 +4218,14 @@ relation Instr_const: `%|-%CONST`(context, instr) rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec + rule `struct.new_desc`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DESC`_instr(x)) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec + rule `struct.new_default_desc`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT_DESC`_instr(x)) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) @@ -4158,10 +4328,10 @@ relation Local_ok: `%|-%:%`(context, local, localtype) -- Nondefaultable: `|-%NONDEFAULTABLE`(t,) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec -relation Func_ok: `%|-%:%`(context, func, deftype) +relation Func_ok: `%|-%:%`(context, func, exactdeftype) ;; ../../../../specification/wasm-latest/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]) + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), `%%`_exactdeftype(?(EXACT_exact), 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 [], 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 [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) @@ -4214,9 +4384,10 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec - rule _{C : context, x : idx}: + rule _{C : context, x : idx, `exact?` : exact?, dt : deftype}: `%|-%:OK`(C, START_start(x)) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) + -- if (C.FUNCS_context[x!`%`_idx.0] = `%%`_exactdeftype(exact?{exact <- `exact?`}, dt)) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) @@ -4248,9 +4419,9 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- if (C.TABLES_context[x!`%`_idx.0] = tt) ;; ../../../../specification/wasm-latest/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, x : idx, edt : exactdeftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype(edt : exactdeftype <: exacttypeuse)) + -- if (C.FUNCS_context[x!`%`_idx.0] = edt) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -4262,13 +4433,13 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:138.1-138.100 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:139.1-139.100 relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:183.1-184.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:184.1-185.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:186.1-189.54 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:187.1-190.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) @@ -4278,13 +4449,13 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:137.1-137.98 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:138.1-138.98 relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:175.1-176.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:176.1-177.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:178.1-181.49 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:179.1-182.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) @@ -4303,28 +4474,28 @@ def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-latest/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*}: + 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*, `edt*` : exactdeftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `edt_I*` : exactdeftype*, `x*` : idx*}: `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`},), `%`_list(import*{import <- `import*`},), `%`_list(tag*{tag <- `tag*`},), `%`_list(global*{global <- `global*`},), `%`_list(mem*{mem <- `mem*`},), `%`_list(table*{table <- `table*`},), `%`_list(func*{func <- `func*`},), `%`_list(data*{data <- `data*`},), `%`_list(elem*{elem <- `elem*`},), start?{start <- `start?`}, `%`_list(export*{export <- `export*`},)), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- (Import_ok: `%|-%:%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- (Func_ok: `%|-%:%`(C, func, edt))*{edt <- `edt*`, func <- `func*`} -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], 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 [], RECS []}) - -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, 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*`}, RECS []}) + -- if (C' = {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS edt_I*{edt_I <- `edt_I*`} ++ edt*{edt <- `edt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, export*{export <- `export*`}))) -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) - -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (edt_I*{edt_I <- `edt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec syntax relaxed2 = @@ -5518,6 +5689,7 @@ syntax fieldval = syntax structinst = { TYPE deftype, + DESC structaddr?, FIELDS fieldval* } @@ -5901,17 +6073,17 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../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))) + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), (dt : deftype <: typeuse))))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../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))) + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), (dt : deftype <: typeuse))))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../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))) + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), (dt : deftype <: typeuse))))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:53.1-55.24 @@ -5999,7 +6171,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:122.1-124.30 rule func{s : store, a : addr, funcinst : funcinst}: - `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype(funcinst.TYPE_funcinst : deftype <: typeuse)) + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype(`%%`_exacttypeuse(?(EXACT_exact), (funcinst.TYPE_funcinst : deftype <: typeuse)))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:126.1-130.37 @@ -6129,11 +6301,11 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-latest/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), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))) CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-latest/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), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))) RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: @@ -6452,6 +6624,54 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_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-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [TRAP_instr]) + -- if (ref_2 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-succeed-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(?(NULL_null), ht))]), [(ref_1 : ref <: instr) BR_instr(l)]) + -- otherwise + -- if (ref_1 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-succeed-addr`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype, a : addr, a' : addr}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr) BR_instr(l)]) + -- otherwise + -- if (ref_1 = `REF.STRUCT_ADDR`_ref(a)) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + -- if (ref_2 = `REF.STRUCT_ADDR`_ref(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-fail`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [TRAP_instr]) + -- if (ref_2 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-succeed-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(?(NULL_null), ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-succeed-addr`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype, a : addr, a' : addr}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.STRUCT_ADDR`_ref(a)) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + -- if (ref_2 = `REF.STRUCT_ADDR`_ref(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-fail`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr) BR_instr(l)]) + -- otherwise + ;; ../../../../specification/wasm-latest/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)]) @@ -6776,12 +6996,51 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.get_desc-null`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `REF.GET_DESC`_instr(x)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.get_desc-struct`{z : state, a : addr, x : idx, a' : addr}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `REF.GET_DESC`_instr(x)]), [`REF.STRUCT_ADDR`_instr(a')]) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-null`{z : state, ref_1 : ref, ref_2 : ref, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(null?{null <- `null?`}, ht))]), [TRAP_instr]) + -- if (ref_2 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-succeed-null`{z : state, ref_1 : ref, ref_2 : ref, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(?(NULL_null), ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-succeed-addr`{z : state, ref_1 : ref, ref_2 : ref, `null?` : null?, ht : heaptype, a : addr, a' : addr}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.STRUCT_ADDR`_ref(a)) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + -- if (ref_2 = `REF.STRUCT_ADDR`_ref(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-fail`{z : state, ref_1 : ref, ref_2 : ref, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(null?{null <- `null?`}, ht))]), [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 ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `struct.new_default_desc`{z : state, ref : ref, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) `STRUCT.NEW_DEFAULT_DESC`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [(ref : ref <: instr) `STRUCT.NEW_DESC`_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-latest/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) @@ -6989,11 +7248,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_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:173.1-174.48 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:215.1-216.48 rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), `%;%`_config(z, [TRAP_instr])) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:176.1-182.61 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:218.1-224.61 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)]), `%;%`_config(z, [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])])) -- if ($funcinst(z)[a] = fi) @@ -7001,7 +7260,7 @@ relation Step: `%~>%`(config, config) -- 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-latest/4.3-execution.instructions.spectec:184.1-190.59 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:226.1-232.59 rule `call_ref-hostfunc-res`{s : store, f : frame, n : n, `val*` : val*, a : addr, yy : typeuse, s' : store, result : result, fi : funcinst, `t_1*` : valtype*, m : m, `t_2*` : valtype*, hf : text}: `%~>%`(`%;%`_config(`%;%`_state(s, f), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), `%;%`_config(`%;%`_state(s', f), $lift_result(result))) -- if ($funcinst(`%;%`_state(s, f))[a] = fi) @@ -7009,7 +7268,7 @@ relation Step: `%~>%`(config, config) -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) -- if (RES_hostcallresult(s', result) <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:192.1-198.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:234.1-240.49 rule `call_ref-hostfunc-div`{s : store, f : frame, n : n, `val*` : val*, a : addr, yy : typeuse, fi : funcinst, `t_1*` : valtype*, m : m, `t_2*` : valtype*, hf : text}: `%~>%`(`%;%`_config(`%;%`_state(s, f), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), `%;%`_config(`%;%`_state(s, f), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) -- if ($funcinst(`%;%`_state(s, f))[a] = fi) @@ -7017,131 +7276,143 @@ relation Step: `%~>%`(config, config) -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) -- if (BOT_hostcallresult <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:242.1-246.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:284.1-288.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:320.1-321.56 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:362.1-363.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:333.1-334.58 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:375.1-376.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:347.1-349.33 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:389.1-391.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:351.1-353.32 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:393.1-395.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:362.1-365.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:404.1-407.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:367.1-368.87 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:409.1-410.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:428.1-429.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:470.1-471.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:512.1-515.60 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:554.1-557.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:517.1-521.29 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:559.1-563.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:523.1-526.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:565.1-568.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:528.1-532.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:570.1-574.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:534.1-537.63 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:576.1-579.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:539.1-542.31 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:581.1-584.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:545.1-548.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:587.1-590.52 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 : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:550.1-555.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:592.1-597.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!`%`_M.0 : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c)[j!`%`_laneidx.0]!`%`_lane_.0,))) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:564.1-567.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:606.1-609.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:569.1-570.84 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:611.1-612.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:630.1-631.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:672.1-673.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:707.1-711.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:778.1-782.75 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*`}}) + -- if (si = {TYPE $type(z, x), DESC ?(), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:789.1-791.47 + rule `struct.new_desc-null`{z : state, n : n, `val*` : val*, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.NULL_ADDR`_instr `STRUCT.NEW_DESC`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`},))) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:793.1-797.74 + rule `struct.new_desc-struct`{z : state, n : n, `val*` : val*, a' : addr, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.STRUCT_ADDR`_instr(a') `STRUCT.NEW_DESC`_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), DESC ?(a'), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:728.1-729.55 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:814.1-815.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_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:731.1-734.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:817.1-820.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `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!`%`_fieldidx.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_fieldidx.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:747.1-752.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:833.1-838.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:792.1-793.66 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:878.1-879.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:795.1-797.39 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:881.1-883.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:799.1-802.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:885.1-888.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))) @@ -7539,13 +7810,13 @@ syntax decl = ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:273.1-273.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:275.1-275.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -7553,13 +7824,13 @@ def $typesd(decl*) : type* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:277.1-277.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:279.1-279.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -7567,13 +7838,13 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:281.1-281.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:283.1-283.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -7581,13 +7852,13 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:285.1-285.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:287.1-287.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -7595,13 +7866,13 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:289.1-289.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:291.1-291.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -7609,13 +7880,13 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:293.1-293.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:295.1-295.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -7623,13 +7894,13 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:297.1-297.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:299.1-299.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -7637,13 +7908,13 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:301.1-301.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:303.1-303.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -7651,13 +7922,13 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:269.1-269.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:305.1-305.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:307.1-307.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -7665,13 +7936,13 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:309.1-309.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:311.1-311.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -7679,13 +7950,13 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:271.1-271.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:313.1-313.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:314.1-314.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:315.1-315.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -7701,9 +7972,9 @@ def $ordered(decl*) : bool ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context,) ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec - rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `t**` : valtype**, `t'*?` : valtype*?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `edt*` : exactdeftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `t**` : valtype**, `t'*?` : valtype*?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `dt_F*` : deftype*, `exact?*` : exact?*, `t_1*` : valtype*, `t_2*` : valtype*}: `|-%:OK`(C,) - -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS `%`_resulttype(t*{t <- `t*`},)*{`t*` <- `t**`}, RETURN `%`_resulttype(t'*{t' <- `t'*`},)?{`t'*` <- `t'*?`}, REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS edt*{edt <- `edt*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS `%`_resulttype(t*{t <- `t*`},)*{`t*` <- `t**`}, RETURN `%`_resulttype(t'*{t' <- `t'*`},)?{`t'*` <- `t'*?`}, REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1],), `%`_resulttype([t_2],))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t*{t <- `t*`},)))*{`t*` <- `t**`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t'*{t' <- `t'*`},)))?{`t'*` <- `t'*?`} - -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + -- (if (x!`%`_idx.0 < |edt*{edt <- `edt*`}|))*{x <- `x*`} ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Localval_ok: `%|-%:%`(store, val?, localtype) @@ -7755,12 +8027,12 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec - rule _{s : store, `deftype*` : deftype*, `tagaddr*` : tagaddr*, `globaladdr*` : globaladdr*, `memaddr*` : memaddr*, `tableaddr*` : tableaddr*, `funcaddr*` : funcaddr*, `dataaddr*` : dataaddr*, `elemaddr*` : elemaddr*, `exportinst*` : exportinst*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `memtype*` : memtype*, `tabletype*` : tabletype*, `deftype_F*` : deftype*, `datatype*` : datatype*, `elemtype*` : elemtype*, k : nat, `subtype*` : subtype*}: - `%|-%:%`(s, {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 tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i,)^(i_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + `%;%|-%:%`(s, C, CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Typeuse_ok: `%|-%:OK`(C, yy) -- Expand_use: `%~~_%%`(yy, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:20.1-26.42 rule return_call_ref{s : store, C : context, yy : typeuse, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%;%|-%:%`(s, C, RETURN_CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + `%;%|-%:%`(s, C, RETURN_CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- Typeuse_ok: `%|-%:OK`(C, yy) -- Expand_use: `%~~_%%`(yy, C, `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*`},))) @@ -7906,15 +8178,16 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}, dt) -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) - -- Func_ok: `%|-%:%`(C, func, dt') + -- Func_ok: `%|-%:%`(C, func, `%%`_exactdeftype(?(EXACT_exact), dt')) -- Deftype_sub: `%|-%<:%`(C, dt', dt) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Structinst_ok: `%|-%:OK`(store, structinst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec - rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + rule _{s : store, dt : deftype, `a?` : addr?, `fv*` : fieldval*, `dcs?` : describes?, `dcr?` : descriptor?, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:OK`(s, {TYPE dt, DESC a?{a <- `a?`}, FIELDS fv*{fv <- `fv*`}}) + -- Expand_desc: `%~%`(dt, `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) + -- if (dcr?{dcr <- `dcr?`} = DESCRIPTOR_descriptor(s.STRUCTS_store[a].TYPE_structinst : deftype <: typeuse)?{a <- `a?`}) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec @@ -7937,30 +8210,35 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rec { -;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:226.1-227.50 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:227.1-228.50 relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:240.1-243.35 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:241.1-244.35 rule trans{fv_1 : fieldval, s : store, fv_2 : fieldval, fv' : fieldval}: `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:245.1-248.20 - rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:246.1-249.20 + rule `ref.struct-field`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},))) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:250.1-252.42 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:251.1-253.31 + rule `ref.struct-desc`{a : addr, s : store, a' : addr}: + `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a')) + -- if (s.STRUCTS_store[a].DESC_structinst = ?(a')) + + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:255.1-257.42 rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:254.1-255.44 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:259.1-260.44 rule `ref.exn`{a : addr, s : store, i : nat}: `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:257.1-258.28 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:262.1-263.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) } @@ -8053,8 +8331,8 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec - rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + rule _{dt : deftype, `a?` : addr?, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%<=%`({TYPE dt, DESC a?{a <- `a?`}, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, DESC a?{a <- `a?`}, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} @@ -8442,7 +8720,9 @@ grammar Bheaptype : heaptype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} ht:Babsheaptype => ht ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + prod{x : idx} {{0x62} {x:Btypeidx}} => _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))) + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse($s33_to_u32(x33)))) -- if (x33!`%`_s33.0 >= (0 : nat <:> int)) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec @@ -8503,14 +8783,29 @@ grammar Bcomptype : comptype ;; ../../../../specification/wasm-latest/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-latest/5.2-binary.types.spectec +grammar Bdescribes : describes + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x : idx} {{0x4C} {x:Btypeidx}} => DESCRIBES_describes(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec +grammar Bdescriptor : descriptor + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x : idx} {{0x4D} {x:Btypeidx}} => DESCRIPTOR_descriptor(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec +grammar Bdesctype : desctype + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype} {{dcs:Bdescribes?{dcs <- `dcs?`}} {dcr:Bdescriptor?{dcr <- `dcr?`}} {ct:Bcomptype}} => `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct) + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bsubtype : subtype ;; ../../../../specification/wasm-latest/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*, dct : desctype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {dct:Bdesctype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, dct) ;; ../../../../specification/wasm-latest/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*, dct : desctype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {dct:Bdesctype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, dct) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + prod{dct : desctype} dct:Bdesctype => SUB_subtype(?(FINAL_final), [], dct) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Brectype : rectype @@ -8553,7 +8848,9 @@ grammar Btabletype : tabletype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bexterntype : externtype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(`%%`_exacttypeuse(?(), _IDX_typeuse(x))) + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x : idx} {{0x20} {x:Btypeidx}} => FUNC_externtype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec @@ -8612,7 +8909,7 @@ grammar Blaneidx : laneidx ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:793.1-807.71 +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:802.1-816.71 grammar Binstr : instr ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -8666,949 +8963,963 @@ grammar Binstr : instr 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-latest/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)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:71.5-71.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:59.5-60.108 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(37,):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_DESC_EQ_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:61.5-62.113 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(38,):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_DESC_EQ_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-latest/5.3-binary.instructions.spectec:75.5-75.36 prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:72.5-72.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:76.5-76.36 prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:73.5-73.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:77.5-77.36 prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:77.5-77.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:81.5-81.38 prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:78.5-78.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:82.5-82.38 prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:85.5-85.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:89.5-89.36 prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:86.5-86.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:90.5-90.36 prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:87.5-87.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:91.5-91.58 prod{x : idx, y : idx} {{0xFC} {`%`_u32(12,):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:88.5-88.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:92.5-92.43 prod{x : idx} {{0xFC} {`%`_u32(13,):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:89.5-89.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:93.5-93.67 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14,):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:90.5-90.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:94.5-94.45 prod{x : idx} {{0xFC} {`%`_u32(15,):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:91.5-91.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:95.5-95.45 prod{x : idx} {{0xFC} {`%`_u32(16,):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:92.5-92.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:96.5-96.45 prod{x : idx} {{0xFC} {`%`_u32(17,):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:105.5-105.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:109.5-109.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:106.5-106.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:110.5-110.41 prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:107.5-107.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:111.5-111.41 prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:108.5-108.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:112.5-112.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:109.5-109.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:113.5-113.50 prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:110.5-110.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:114.5-114.50 prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:111.5-111.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:115.5-115.51 prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:112.5-112.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:116.5-116.51 prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:113.5-113.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:117.5-117.50 prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:114.5-114.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:118.5-118.50 prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:115.5-115.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:119.5-119.51 prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:116.5-116.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:120.5-120.51 prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:117.5-117.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:121.5-121.51 prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:118.5-118.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:122.5-122.51 prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:119.5-119.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:123.5-123.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:120.5-120.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:124.5-124.42 prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:121.5-121.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:125.5-125.42 prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:122.5-122.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:126.5-126.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:123.5-123.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:127.5-127.45 prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:124.5-124.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:128.5-128.46 prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:125.5-125.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:129.5-129.45 prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:126.5-126.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:130.5-130.46 prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:127.5-127.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:131.5-131.46 prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:128.5-128.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:132.5-132.36 prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:129.5-129.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:133.5-133.36 prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:130.5-130.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:134.5-134.56 prod{x : idx, y : idx} {{0xFC} {`%`_u32(8,):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:131.5-131.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:135.5-135.42 prod{x : idx} {{0xFC} {`%`_u32(9,):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:132.5-132.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:136.5-136.64 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10,):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:133.5-133.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:137.5-137.44 prod{x : idx} {{0xFC} {`%`_u32(11,):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:140.5-140.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:144.5-144.37 prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:141.5-141.24 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:145.5-145.24 prod 0xD1 => `REF.IS_NULL`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:142.5-142.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:146.5-146.34 prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:143.5-143.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:147.5-147.19 prod 0xD3 => `REF.EQ`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:144.5-144.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:148.5-148.28 prod 0xD4 => `REF.AS_NON_NULL`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:145.5-145.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:149.5-149.51 prod{ht : heaptype} {{0xFB} {`%`_u32(20,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:146.5-146.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:150.5-150.56 prod{ht : heaptype} {{0xFB} {`%`_u32(21,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:147.5-147.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:151.5-151.51 prod{ht : heaptype} {{0xFB} {`%`_u32(22,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:148.5-148.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:152.5-152.56 prod{ht : heaptype} {{0xFB} {`%`_u32(23,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:152.5-152.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:153.5-153.46 + prod{x : idx} {{0xFB} {`%`_u32(34,):Bu32} {x:Btypeidx}} => `REF.GET_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:154.5-154.59 + prod{ht : heaptype} {{0xFB} {`%`_u32(35,):Bu32} {ht:Bheaptype}} => `REF.CAST_DESC_EQ`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:155.5-155.64 + prod{ht : heaptype} {{0xFB} {`%`_u32(36,):Bu32} {ht:Bheaptype}} => `REF.CAST_DESC_EQ`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:159.5-159.43 prod{x : idx} {{0xFB} {`%`_u32(0,):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:153.5-153.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:160.5-160.51 prod{x : idx} {{0xFB} {`%`_u32(1,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:154.5-154.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:161.5-161.49 + prod{x : idx} {{0xFB} {`%`_u32(32,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:162.5-162.57 + prod{x : idx} {{0xFB} {`%`_u32(33,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:163.5-163.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:155.5-155.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:164.5-164.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:156.5-156.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:165.5-165.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:157.5-157.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:166.5-166.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:161.5-161.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:170.5-170.42 prod{x : idx} {{0xFB} {`%`_u32(6,):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:162.5-162.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:171.5-171.50 prod{x : idx} {{0xFB} {`%`_u32(7,):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:163.5-163.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:172.5-172.57 prod{x : idx, n : n} {{0xFB} {`%`_u32(8,):Bu32} {x:Btypeidx} {`%`_u32(n,):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:164.5-164.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:173.5-173.60 prod{x : idx, y : idx} {{0xFB} {`%`_u32(9,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:165.5-165.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:174.5-174.61 prod{x : idx, y : idx} {{0xFB} {`%`_u32(10,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:166.5-166.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:175.5-175.43 prod{x : idx} {{0xFB} {`%`_u32(11,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:167.5-167.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:176.5-176.45 prod{x : idx} {{0xFB} {`%`_u32(12,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:168.5-168.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:177.5-177.45 prod{x : idx} {{0xFB} {`%`_u32(13,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:169.5-169.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:178.5-178.43 prod{x : idx} {{0xFB} {`%`_u32(14,):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:170.5-170.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:179.5-179.30 prod {{0xFB} {`%`_u32(15,):Bu32}} => `ARRAY.LEN`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:171.5-171.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:180.5-180.44 prod{x : idx} {{0xFB} {`%`_u32(16,):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:172.5-172.65 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:181.5-181.65 prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17,):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:173.5-173.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:182.5-182.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(18,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:174.5-174.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:183.5-183.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(19,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:178.5-178.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:187.5-187.39 prod {{0xFB} {`%`_u32(26,):Bu32}} => `ANY.CONVERT_EXTERN`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:179.5-179.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:188.5-188.39 prod {{0xFB} {`%`_u32(27,):Bu32}} => `EXTERN.CONVERT_ANY`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:183.5-183.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:192.5-192.28 prod {{0xFB} {`%`_u32(28,):Bu32}} => `REF.I31`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:184.5-184.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:193.5-193.30 prod {{0xFB} {`%`_u32(29,):Bu32}} => `I31.GET`_instr(S_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:185.5-185.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:194.5-194.30 prod {{0xFB} {`%`_u32(30,):Bu32}} => `I31.GET`_instr(U_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:192.5-192.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:201.5-201.31 prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:193.5-193.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:202.5-202.31 prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:194.5-194.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:203.5-203.31 prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:195.5-195.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:204.5-204.31 prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:199.5-199.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:208.5-208.27 prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:203.5-203.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:212.5-212.25 prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:204.5-204.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:213.5-213.25 prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:205.5-205.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:214.5-214.27 prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:206.5-206.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:215.5-215.27 prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:207.5-207.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:216.5-216.27 prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:208.5-208.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:217.5-217.27 prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:209.5-209.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:218.5-218.27 prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:210.5-210.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:219.5-219.27 prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:211.5-211.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:220.5-220.27 prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:212.5-212.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:221.5-221.27 prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:216.5-216.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:225.5-225.27 prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:220.5-220.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:229.5-229.25 prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:221.5-221.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:230.5-230.25 prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:222.5-222.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:231.5-231.27 prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:223.5-223.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:232.5-232.27 prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:224.5-224.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:233.5-233.27 prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:225.5-225.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:234.5-234.27 prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:226.5-226.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:235.5-235.27 prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:227.5-227.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:236.5-236.27 prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:228.5-228.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:237.5-237.27 prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:229.5-229.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:238.5-238.27 prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:233.5-233.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:242.5-242.25 prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:234.5-234.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:243.5-243.25 prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:235.5-235.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:244.5-244.25 prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:236.5-236.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:245.5-245.25 prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:237.5-237.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:246.5-246.25 prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:238.5-238.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:247.5-247.25 prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:242.5-242.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:251.5-251.25 prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:243.5-243.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:252.5-252.25 prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:244.5-244.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:253.5-253.25 prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:245.5-245.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:254.5-254.25 prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:246.5-246.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:255.5-255.25 prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:247.5-247.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:256.5-256.25 prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:251.5-251.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:260.5-260.25 prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:252.5-252.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:261.5-261.25 prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:253.5-253.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:262.5-262.28 prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:257.5-257.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:266.5-266.26 prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:258.5-258.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:267.5-267.26 prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:259.5-259.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:268.5-268.26 prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:260.5-260.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:269.5-269.28 prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:261.5-261.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:270.5-270.28 prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:262.5-262.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:271.5-271.28 prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:263.5-263.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:272.5-272.28 prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:264.5-264.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:273.5-273.26 prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:265.5-265.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:274.5-274.25 prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:266.5-266.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:275.5-275.26 prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:267.5-267.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:276.5-276.26 prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:268.5-268.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:277.5-277.28 prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:269.5-269.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:278.5-278.28 prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:270.5-270.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:279.5-279.27 prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:271.5-271.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:280.5-280.27 prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:275.5-275.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:284.5-284.25 prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:276.5-276.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:285.5-285.25 prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:277.5-277.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:286.5-286.28 prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:281.5-281.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:290.5-290.31 prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:282.5-282.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:291.5-291.32 prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:286.5-286.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:295.5-295.31 prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:287.5-287.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:296.5-296.32 prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:288.5-288.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:297.5-297.32 prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:292.5-292.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:301.5-301.26 prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:293.5-293.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:302.5-302.26 prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:294.5-294.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:303.5-303.26 prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:295.5-295.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:304.5-304.28 prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:296.5-296.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:305.5-305.28 prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:297.5-297.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:306.5-306.28 prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:298.5-298.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:307.5-307.28 prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:299.5-299.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:308.5-308.26 prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:300.5-300.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:309.5-309.25 prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:301.5-301.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:310.5-310.26 prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:302.5-302.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:311.5-311.26 prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:303.5-303.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:312.5-312.28 prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:304.5-304.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:313.5-313.28 prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:305.5-305.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:314.5-314.27 prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:306.5-306.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:315.5-315.27 prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:310.5-310.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:319.5-319.25 prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:311.5-311.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:320.5-320.25 prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:312.5-312.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:321.5-321.26 prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:313.5-313.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:322.5-322.27 prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:314.5-314.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:323.5-323.27 prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:315.5-315.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:324.5-324.29 prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:316.5-316.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:325.5-325.26 prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:320.5-320.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:329.5-329.26 prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:321.5-321.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:330.5-330.26 prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:322.5-322.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:331.5-331.26 prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:323.5-323.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:332.5-332.26 prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:324.5-324.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:333.5-333.26 prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:325.5-325.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:334.5-334.26 prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:326.5-326.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:335.5-335.31 prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:330.5-330.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:339.5-339.25 prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:331.5-331.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:340.5-340.25 prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:332.5-332.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:341.5-341.26 prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:333.5-333.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:342.5-342.27 prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:334.5-334.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:343.5-343.27 prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:335.5-335.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:344.5-344.29 prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:336.5-336.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:345.5-345.26 prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:340.5-340.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:349.5-349.26 prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:341.5-341.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:350.5-350.26 prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:342.5-342.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:351.5-351.26 prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:343.5-343.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:352.5-352.26 prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:344.5-344.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:353.5-353.26 prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:345.5-345.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:354.5-354.26 prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:346.5-346.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:355.5-355.31 prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:351.5-351.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:360.5-360.31 prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:352.5-352.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:361.5-361.34 prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:353.5-353.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:362.5-362.34 prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:354.5-354.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:363.5-363.34 prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:355.5-355.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:364.5-364.34 prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:356.5-356.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:365.5-365.35 prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:357.5-357.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:366.5-366.35 prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:358.5-358.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:367.5-367.34 prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:359.5-359.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:368.5-368.34 prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:360.5-360.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:369.5-369.34 prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:361.5-361.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:370.5-370.34 prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:362.5-362.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:371.5-371.36 prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:363.5-363.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:372.5-372.36 prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:364.5-364.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:373.5-373.36 prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:365.5-365.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:374.5-374.36 prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:366.5-366.33 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:375.5-375.33 prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:367.5-367.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:376.5-376.36 prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:368.5-368.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:377.5-377.36 prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:369.5-369.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:378.5-378.36 prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:370.5-370.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:379.5-379.36 prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:371.5-371.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:380.5-380.34 prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:372.5-372.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:381.5-381.38 prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:373.5-373.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:382.5-382.38 prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:374.5-374.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:383.5-383.38 prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:375.5-375.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:384.5-384.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:379.5-379.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:388.5-388.45 prod {{0xFC} {`%`_u32(0,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:380.5-380.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:389.5-389.45 prod {{0xFC} {`%`_u32(1,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:381.5-381.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:390.5-390.45 prod {{0xFC} {`%`_u32(2,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:382.5-382.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:391.5-391.45 prod {{0xFC} {`%`_u32(3,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:383.5-383.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:392.5-392.45 prod {{0xFC} {`%`_u32(4,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:384.5-384.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:393.5-393.45 prod {{0xFC} {`%`_u32(5,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:385.5-385.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:394.5-394.45 prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:386.5-386.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:395.5-395.45 prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:396.5-396.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:405.5-405.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:397.5-397.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:406.5-406.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:398.5-398.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:407.5-407.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:399.5-399.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:408.5-408.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:400.5-400.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:409.5-409.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:401.5-401.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:410.5-410.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:402.5-402.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:411.5-411.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:403.5-403.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:412.5-412.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:404.5-404.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:413.5-413.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:405.5-405.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:414.5-414.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:406.5-406.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:415.5-415.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:407.5-407.52 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:416.5-416.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:408.5-408.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:417.5-417.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:409.5-409.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:418.5-418.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:410.5-410.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:419.5-419.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:411.5-411.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:420.5-420.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:412.5-412.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:421.5-421.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:413.5-413.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:422.5-422.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:414.5-414.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:423.5-423.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:415.5-415.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:424.5-424.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:416.5-416.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:425.5-425.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:417.5-417.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:426.5-426.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:421.5-421.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:430.5-430.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:425.5-425.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:434.5-434.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:426.5-426.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:435.5-435.49 prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:427.5-427.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:436.5-436.58 prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:431.5-431.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:440.5-440.38 prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:432.5-432.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:441.5-441.38 prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:433.5-433.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:442.5-442.38 prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:434.5-434.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:443.5-443.38 prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:435.5-435.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:444.5-444.38 prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:436.5-436.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:445.5-445.38 prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:440.5-440.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:449.5-449.60 prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:441.5-441.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:450.5-450.60 prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:442.5-442.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:451.5-451.58 prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:443.5-443.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:452.5-452.60 prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:444.5-444.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:453.5-453.60 prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:445.5-445.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:454.5-454.58 prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:446.5-446.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:455.5-455.58 prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:447.5-447.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:456.5-456.58 prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:448.5-448.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:457.5-457.58 prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:458.5-458.58 prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:450.5-450.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:459.5-459.58 prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:451.5-451.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:460.5-460.58 prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:461.5-461.58 prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:462.5-462.58 prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:457.5-457.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:466.5-466.41 prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:458.5-458.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:467.5-467.41 prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:459.5-459.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:468.5-468.43 prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:460.5-460.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:469.5-469.43 prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:461.5-461.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:470.5-470.43 prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:462.5-462.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:471.5-471.43 prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:463.5-463.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:464.5-464.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:465.5-465.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:474.5-474.43 prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:475.5-475.43 prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:470.5-470.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:479.5-479.41 prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:471.5-471.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:480.5-480.41 prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:472.5-472.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:481.5-481.43 prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:482.5-482.43 prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:474.5-474.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:483.5-483.43 prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:475.5-475.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:484.5-484.43 prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:476.5-476.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:477.5-477.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:478.5-478.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:487.5-487.43 prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:488.5-488.43 prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:483.5-483.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:492.5-492.41 prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:484.5-484.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:493.5-493.41 prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:485.5-485.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:494.5-494.43 prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:495.5-495.43 prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:487.5-487.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:496.5-496.43 prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:488.5-488.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:497.5-497.43 prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:489.5-489.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:498.5-498.43 prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:490.5-490.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:499.5-499.43 prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:491.5-491.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:500.5-500.43 prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:501.5-501.43 prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:496.5-496.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:497.5-497.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:498.5-498.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:499.5-499.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:500.5-500.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:509.5-509.41 prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:501.5-501.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:510.5-510.41 prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:505.5-505.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:514.5-514.41 prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:515.5-515.41 prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:516.5-516.41 prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:517.5-517.41 prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:509.5-509.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:518.5-518.41 prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:510.5-510.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:519.5-519.41 prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:514.5-514.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:523.5-523.36 prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:518.5-518.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:527.5-527.37 prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:519.5-519.40 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:528.5-528.40 prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:520.5-520.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:529.5-529.36 prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:521.5-521.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:530.5-530.37 prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:525.5-525.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:534.5-534.44 prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:529.5-529.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:538.5-538.43 prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:533.5-533.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:542.5-542.41 prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:534.5-534.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:543.5-543.41 prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:535.5-535.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:544.5-544.44 prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:539.5-539.48 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:548.5-548.48 prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:543.5-543.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:552.5-552.41 prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:547.5-547.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:556.5-556.53 prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:548.5-548.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:557.5-557.53 prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:552.5-552.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:561.5-561.45 prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:553.5-553.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:562.5-562.47 prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:554.5-554.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:563.5-563.47 prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:558.5-558.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:567.5-567.43 prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:559.5-559.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:568.5-568.49 prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:560.5-560.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:569.5-569.49 prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:561.5-561.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:570.5-570.43 prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:562.5-562.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:571.5-571.49 prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:563.5-563.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:572.5-572.49 prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:564.5-564.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:573.5-573.45 prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:565.5-565.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:574.5-574.45 prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:566.5-566.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:575.5-575.45 prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:567.5-567.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:576.5-576.45 prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:568.5-568.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:577.5-577.46 prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:572.5-572.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:581.5-581.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-latest/5.3-binary.instructions.spectec:573.5-573.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:582.5-582.70 prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:577.5-577.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:586.5-586.42 prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:578.5-578.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:587.5-587.42 prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:582.5-582.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:591.5-591.53 prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:583.5-583.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:592.5-592.43 prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:584.5-584.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:593.5-593.49 prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:585.5-585.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:594.5-594.49 prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:586.5-586.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:595.5-595.43 prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:587.5-587.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:596.5-596.49 prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:588.5-588.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:597.5-597.49 prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:589.5-589.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:598.5-598.43 prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:590.5-590.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:599.5-599.45 prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:591.5-591.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:600.5-600.45 prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:592.5-592.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:601.5-601.45 prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:593.5-593.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:602.5-602.45 prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:594.5-594.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:603.5-603.46 prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:595.5-595.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:604.5-604.57 prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:599.5-599.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:608.5-608.49 prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:603.5-603.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:612.5-612.41 prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:607.5-607.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:616.5-616.53 prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:608.5-608.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:617.5-617.53 prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:612.5-612.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:621.5-621.63 prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:613.5-613.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:622.5-622.64 prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:614.5-614.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:623.5-623.63 prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:615.5-615.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:624.5-624.64 prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:619.5-619.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:628.5-628.45 prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:620.5-620.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:629.5-629.47 prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:621.5-621.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:630.5-630.47 prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:625.5-625.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:634.5-634.66 prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:626.5-626.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:635.5-635.67 prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:627.5-627.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:636.5-636.66 prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:628.5-628.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:637.5-637.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-latest/5.3-binary.instructions.spectec:629.5-629.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:638.5-638.67 prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:633.5-633.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:642.5-642.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-latest/5.3-binary.instructions.spectec:634.5-634.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:643.5-643.70 prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:638.5-638.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:647.5-647.42 prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:639.5-639.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:648.5-648.42 prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:643.5-643.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:652.5-652.49 prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:647.5-647.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:656.5-656.41 prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:651.5-651.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:660.5-660.63 prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:652.5-652.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:661.5-661.64 prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:653.5-653.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:662.5-662.63 prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:654.5-654.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:663.5-663.64 prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:658.5-658.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:667.5-667.45 prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:659.5-659.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:668.5-668.49 prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:660.5-660.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:669.5-669.49 prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:664.5-664.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:673.5-673.43 prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:665.5-665.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:674.5-674.43 prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:666.5-666.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:675.5-675.43 prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:667.5-667.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:676.5-676.45 prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:668.5-668.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:677.5-677.45 prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:669.5-669.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:678.5-678.45 prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:670.5-670.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:679.5-679.45 prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:674.5-674.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:683.5-683.59 prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:675.5-675.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:684.5-684.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-latest/5.3-binary.instructions.spectec:676.5-676.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:685.5-685.67 prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:677.5-677.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:686.5-686.66 prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:678.5-678.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:687.5-687.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-latest/5.3-binary.instructions.spectec:682.5-682.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:691.5-691.72 prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOT_ADDS_vextternop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:686.5-686.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:695.5-695.42 prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:687.5-687.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:696.5-696.42 prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:691.5-691.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:700.5-700.49 prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:695.5-695.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:704.5-704.41 prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:699.5-699.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:708.5-708.63 prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:700.5-700.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:709.5-709.64 prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:701.5-701.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:710.5-710.63 prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:702.5-702.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:711.5-711.64 prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:706.5-706.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:715.5-715.45 prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:707.5-707.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:716.5-716.49 prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:708.5-708.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:717.5-717.49 prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:712.5-712.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:721.5-721.43 prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:713.5-713.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:722.5-722.43 prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:714.5-714.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:723.5-723.43 prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:718.5-718.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:727.5-727.42 prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:719.5-719.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:728.5-728.42 prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:720.5-720.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:729.5-729.46 prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:721.5-721.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:730.5-730.46 prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:722.5-722.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:731.5-731.46 prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:723.5-723.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:732.5-732.46 prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:727.5-727.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:736.5-736.66 prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:728.5-728.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:737.5-737.67 prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:729.5-729.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:738.5-738.66 prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:730.5-730.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:739.5-739.67 prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:734.5-734.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:743.5-743.43 prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:735.5-735.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:744.5-744.44 prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:736.5-736.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:745.5-745.44 prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:737.5-737.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:746.5-746.46 prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:738.5-738.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:747.5-747.42 prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:739.5-739.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:748.5-748.42 prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:740.5-740.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:749.5-749.43 prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:744.5-744.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:753.5-753.43 prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:745.5-745.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:754.5-754.43 prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:746.5-746.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:755.5-755.43 prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:756.5-756.43 prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:748.5-748.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:757.5-757.43 prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:749.5-749.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:758.5-758.43 prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:750.5-750.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:759.5-759.44 prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:751.5-751.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:760.5-760.44 prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:752.5-752.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:761.5-761.51 prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:753.5-753.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:762.5-762.51 prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:757.5-757.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:766.5-766.53 prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:758.5-758.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:767.5-767.54 prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:762.5-762.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:771.5-771.43 prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:763.5-763.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:772.5-772.44 prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:764.5-764.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:773.5-773.44 prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:765.5-765.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:774.5-774.46 prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:766.5-766.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:775.5-775.42 prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:767.5-767.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:776.5-776.42 prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:768.5-768.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:777.5-777.43 prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:772.5-772.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:781.5-781.43 prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:773.5-773.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:782.5-782.43 prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:774.5-774.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:783.5-783.43 prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:784.5-784.43 prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:776.5-776.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:785.5-785.43 prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:777.5-777.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:786.5-786.43 prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:778.5-778.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:787.5-787.44 prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:779.5-779.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:788.5-788.44 prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:780.5-780.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:789.5-789.51 prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:781.5-781.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:790.5-790.51 prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:785.5-785.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:794.5-794.53 prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:786.5-786.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:795.5-795.54 prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:787.5-787.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:796.5-796.59 prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:788.5-788.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:797.5-797.59 prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:789.5-789.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:798.5-798.59 prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:790.5-790.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:799.5-799.59 prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:794.5-794.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:803.5-803.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-latest/5.3-binary.instructions.spectec:795.5-795.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:804.5-804.61 prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:796.5-796.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:805.5-805.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-latest/5.3-binary.instructions.spectec:797.5-797.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:806.5-806.62 prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:798.5-798.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:807.5-807.60 prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:799.5-799.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:808.5-808.60 prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:800.5-800.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:809.5-809.67 prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:801.5-801.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:810.5-810.67 prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:802.5-802.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:811.5-811.64 prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:803.5-803.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:812.5-812.64 prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:804.5-804.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:813.5-813.66 prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:805.5-805.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:814.5-814.66 prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:806.5-806.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:815.5-815.71 prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:807.5-807.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:816.5-816.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))) } @@ -10409,7 +10720,9 @@ grammar Theaptype_(I : I) : heaptype ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ht : heaptype} ht:Tabsheaptype => ht ;; ../../../../specification/wasm-latest/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) + prod{x : idx} {{"("} {"exact"} {x:Ttypeidx_(I)} {")"}} => _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))) + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(I) => _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x))) ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tnull : null @@ -10475,6 +10788,21 @@ grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../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 [[?(`%`_name([],))]], TYPEDEFS []}) +;; ../../../../specification/wasm-latest/6.2-text.types.spectec +grammar Tdescribes_(I : I) : describes + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx} {{"("} {"describes"} {x:Ttypeidx_(I)} {")"}} => DESCRIBES_describes(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/6.2-text.types.spectec +grammar Tdescriptor_(I : I) : descriptor + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx} {{"("} {"descriptor"} {x:Ttypeidx_(I)} {")"}} => DESCRIPTOR_descriptor(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/6.2-text.types.spectec +grammar Tdesctype_(I : I) : (desctype, idctxt) + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype, I' : I} {{dcs?{dcs <- `dcs?`}:Tdescribes_(I)?{}} {dcr?{dcr <- `dcr?`}:Tdescriptor_(I)?{}} {(ct, I'):Tcomptype_(I)}} => (`%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct), I') + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfinal : final ;; ../../../../specification/wasm-latest/6.2-text.types.spectec @@ -10483,7 +10811,7 @@ grammar Tfinal : final ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tsubtype_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-latest/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*, dct : desctype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(dct, I'):Tdesctype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, dct), I') ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttypedef_(I : I) : (subtype, idctxt) @@ -10514,12 +10842,12 @@ grammar Ttypeuse_(I : I) : (typeidx, idctxt) ;; ../../../../specification/wasm-latest/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 (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `%%%`_desctype(?(), ?(), `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-latest/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 (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `%%%`_desctype(?(), ?(), `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',) @@ -10556,7 +10884,9 @@ grammar Texterntype_(I : I) : (externtype, idctxt) ;; ../../../../specification/wasm-latest/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 []}) ;; ../../../../specification/wasm-latest/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(`%%`_exacttypeuse(?(), _IDX_typeuse(x))), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {"("} {"exact"} {(x, I'):Ttypeuse_(I)} {")"} {")"}} => (FUNC_externtype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tlabel_(I : I) : (name?, I) @@ -10641,6 +10971,10 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_desc_eq"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_DESC_EQ_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_desc_eq_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) @@ -10803,6 +11137,10 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{x : idx} {{"ref.get_desc"} {x:Ttypeidx_(I)}} => `REF.GET_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast_desc_eq"} {rt:Treftype_(I)}} => `REF.CAST_DESC_EQ`_instr(rt) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.i31" => `REF.I31`_instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i31.get_s" => `I31.GET`_instr(S_sx) @@ -10813,6 +11151,10 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_desc"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default_desc"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/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-latest/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) @@ -11797,6 +12139,8 @@ grammar Texportfuncdots_(I : I) : () 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 + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {"("} {"exact"} {Ttypeuse_(I)} {")"}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttag_(I : I) : () @@ -12457,6 +12801,10 @@ def $free_externidx(externidx : externidx) : free syntax null = | NULL +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec +syntax exact = + | EXACT + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax addrtype = | I32 @@ -12508,13 +12856,17 @@ syntax final = ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:37.1-38.43 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:41.1-42.43 syntax typeuse = | _IDX(typeidx) | _DEF(rectype : rectype, n : n) | REC(n) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:43.1-44.26 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:44.1-44.65 +syntax exacttypeuse = + | `%%`(`exact?` : exact?, typeuse : typeuse) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:49.1-50.48 syntax heaptype = | ANY | EQ @@ -12529,11 +12881,9 @@ syntax heaptype = | EXTERN | NOEXTERN | BOT - | _IDX(typeidx) - | _DEF(rectype : rectype, n : n) - | REC(n) + | _HT(exacttypeuse) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:51.1-52.14 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:57.1-58.14 syntax valtype = | I32 | I64 @@ -12543,7 +12893,7 @@ syntax valtype = | REF(`null?` : null?, heaptype : heaptype) | BOT -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:92.1-92.66 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:98.1-98.66 syntax storagetype = | I32 | I64 @@ -12555,24 +12905,36 @@ syntax storagetype = | I8 | I16 -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:102.1-103.16 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:108.1-109.16 syntax resulttype = list(syntax valtype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:112.1-112.61 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:118.1-118.61 syntax fieldtype = | `%%`(`mut?` : mut?, storagetype : storagetype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:114.1-117.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:120.1-123.34 syntax comptype = | STRUCT(list(syntax fieldtype)) | ARRAY(fieldtype) | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:119.1-120.33 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:125.1-125.88 +syntax describes = + | DESCRIBES(typeuse) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:126.1-126.91 +syntax descriptor = + | DESCRIPTOR(typeuse) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:128.1-129.36 +syntax desctype = + | `%%%`(`describes?` : describes?, `descriptor?` : descriptor?, comptype : comptype) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:131.1-132.33 syntax subtype = - | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) + | SUB(`final?` : final?, `typeuse*` : typeuse*, desctype : desctype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:122.1-123.22 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:134.1-135.22 syntax rectype = | REC(list(syntax subtype)) } @@ -12581,6 +12943,10 @@ syntax rectype = syntax deftype = | _DEF(rectype : rectype, n : n) +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec +syntax exactdeftype = + | `%%`(`exact?` : exact?, deftype : deftype) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax typevar = | _IDX(typeidx) @@ -12737,7 +13103,7 @@ syntax externtype = | GLOBAL(globaltype) | MEM(memtype) | TABLE(tabletype) - | FUNC(typeuse) + | FUNC(exacttypeuse) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax moduletype = @@ -12961,13 +13327,13 @@ def $as_deftype(typeuse : typeuse) : deftype ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:324.1-324.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:330.1-330.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:331.1-331.44 def $tagsxt{jt : tagtype, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:332.1-332.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -12975,13 +13341,13 @@ def $tagsxt(externtype*) : tagtype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:325.1-325.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:334.1-334.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:335.1-335.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:336.1-336.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -12989,13 +13355,13 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:326.1-326.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:338.1-338.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:339.1-339.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:340.1-340.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -13003,13 +13369,13 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:327.1-327.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:342.1-342.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:343.1-343.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:344.1-344.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) -- otherwise } @@ -13017,13 +13383,13 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:312.1-312.88 -def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:330.1-330.24 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:328.1-328.88 +def $funcsxt(externtype*) : exactdeftype* + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:346.1-346.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype(dt : deftype <: typeuse)] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:347.1-347.49 + def $funcsxt{edt : exactdeftype, `xt*` : externtype*}([FUNC_externtype(edt : exactdeftype <: exacttypeuse)] ++ xt*{xt <- `xt*`}) = [edt] ++ $funcsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:348.1-348.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -13031,14 +13397,14 @@ def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:353.1-353.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:384.1-384.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:385.1-385.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = tu_1 -- if (tv = tv_1) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:367.1-367.92 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:386.1-386.92 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) -- otherwise } @@ -13046,13 +13412,13 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:425.1-425.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:426.1-426.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:427.1-427.63 def $minus_recs{n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:428.1-429.45 def $minus_recs{x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) } @@ -13075,74 +13441,87 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:354.1-354.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:388.1-388.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:389.1-389.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:359.1-359.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:395.1-395.89 + def $subst_heaptype{`exact?` : exact?, tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(_HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, tu')), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:396.1-396.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -- otherwise -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:360.1-360.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:398.1-398.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:361.1-361.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:400.1-400.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:401.1-401.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:402.1-402.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-latest/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:403.1-403.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:364.1-364.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:407.1-407.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:408.1-408.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:365.1-365.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:410.1-410.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:366.1-366.112 +def $subst_describes(describes : describes, typevar*, typeuse*) : describes + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:416.1-416.88 + def $subst_describes{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(DESCRIBES_describes(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = DESCRIBES_describes($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:367.1-367.112 +def $subst_descriptor(descriptor : descriptor, typevar*, typeuse*) : descriptor + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:417.1-417.91 + def $subst_descriptor{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(DESCRIPTOR_descriptor(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = DESCRIPTOR_descriptor($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:369.1-369.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:412.1-412.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`},)) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:413.1-413.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:414.1-414.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-latest/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:370.1-370.112 +def $subst_desctype(desctype : desctype, typevar*, typeuse*) : desctype + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:419.1-420.99 + def $subst_desctype{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_desctype($subst_describes(dcs, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})?{dcs <- `dcs?`}, $subst_descriptor(dcr, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})?{dcr <- `dcr?`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:371.1-371.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-latest/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*`})) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:422.1-423.75 + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, dct : desctype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, dct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_desctype(dct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:372.1-372.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:431.1-432.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`},)) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:373.1-373.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:437.1-437.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) } @@ -13182,7 +13561,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{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*`})) + def $subst_externtype{`exact?` : exact?, tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, tu')), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, $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 @@ -13237,11 +13616,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:475.1-475.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:476.1-476.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:477.1-477.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -13318,75 +13697,90 @@ def $free_typevar(typevar : typevar) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:481.1-481.36 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:505.1-505.36 def $free_heaptype(heaptype : heaptype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:529.1-529.65 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:556.1-556.65 def $free_heaptype{absheaptype : absheaptype}((absheaptype : absheaptype <: heaptype)) = $free_absheaptype(absheaptype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:530.1-530.53 - def $free_heaptype{typeuse : typeuse}((typeuse : typeuse <: heaptype)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:557.1-557.64 + def $free_heaptype{typeuse : typeuse}(_HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, typeuse))) = $free_typeuse(typeuse) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:482.1-482.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:506.1-506.34 def $free_reftype(reftype : reftype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:532.1-532.65 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:559.1-559.65 def $free_reftype{`null?` : null?, heaptype : heaptype}(REF_reftype(null?{null <- `null?`}, heaptype)) = $free_heaptype(heaptype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:484.1-484.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:508.1-508.34 def $free_typeuse(typeuse : typeuse) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:526.1-526.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:553.1-553.52 def $free_typeuse{typevar : typevar}((typevar : typevar <: typeuse)) = $free_typevar(typevar) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:527.1-527.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:554.1-554.52 def $free_typeuse{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:485.1-485.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:509.1-509.34 def $free_valtype(valtype : valtype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:534.1-534.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:561.1-561.52 def $free_valtype{numtype : numtype}((numtype : numtype <: valtype)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:535.1-535.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:562.1-562.52 def $free_valtype{vectype : vectype}((vectype : vectype <: valtype)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:536.1-536.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:563.1-563.52 def $free_valtype{reftype : reftype}((reftype : reftype <: valtype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:537.1-537.28 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:564.1-564.28 def $free_valtype(BOT_valtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:487.1-487.40 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:511.1-511.40 def $free_resulttype(resulttype : resulttype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:539.1-539.69 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:566.1-566.69 def $free_resulttype{`valtype*` : valtype*}(`%`_resulttype(valtype*{valtype <- `valtype*`},)) = $free_list($free_valtype(valtype)*{valtype <- `valtype*`}) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:488.1-488.42 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:512.1-512.42 def $free_storagetype(storagetype : storagetype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:541.1-541.56 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:568.1-568.56 def $free_storagetype{valtype : valtype}((valtype : valtype <: storagetype)) = $free_valtype(valtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:542.1-542.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:569.1-569.59 def $free_storagetype{packtype : packtype}((packtype : packtype <: storagetype)) = $free_packtype(packtype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:489.1-489.38 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:513.1-513.38 def $free_fieldtype(fieldtype : fieldtype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:544.1-544.71 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:571.1-571.71 def $free_fieldtype{`mut?` : mut?, storagetype : storagetype}(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) = $free_storagetype(storagetype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:490.1-490.36 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:514.1-514.36 def $free_comptype(comptype : comptype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:546.1-546.80 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:573.1-573.80 def $free_comptype{`fieldtype*` : fieldtype*}(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) = $free_list($free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:547.1-547.65 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:574.1-574.65 def $free_comptype{fieldtype : fieldtype}(ARRAY_comptype(fieldtype)) = $free_fieldtype(fieldtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:548.1-548.121 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:575.1-575.121 def $free_comptype{resulttype_1 : resulttype, resulttype_2 : resulttype}(`FUNC%->%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:491.1-491.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:515.1-515.38 +def $free_describes(describes : describes) : free + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:577.1-577.54 + def $free_describes{tu : typeuse}(DESCRIBES_describes(tu)) = $free_typeuse(tu) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:516.1-516.40 +def $free_descriptor(descriptor : descriptor) : free + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:578.1-578.56 + def $free_descriptor{tu : typeuse}(DESCRIPTOR_descriptor(tu)) = $free_typeuse(tu) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:517.1-517.36 +def $free_desctype(desctype : desctype) : free + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:580.1-581.94 + def $free_desctype{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype}(`%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct)) = $free_opt($free_describes(dcs)?{dcs <- `dcs?`}) +++ $free_opt($free_descriptor(dcr)?{dcr <- `dcr?`}) +++ $free_comptype(ct) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:518.1-518.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:550.1-551.66 - def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:583.1-584.61 + def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, dct : desctype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, dct)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_desctype(dct) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:492.1-492.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:519.1-519.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:553.1-553.70 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:586.1-586.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:520.1-520.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:547.1-547.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:521.1-521.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:548.1-548.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -13431,7 +13825,7 @@ def $free_externtype(externtype : externtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + def $free_externtype{`exact?` : exact?, typeuse : typeuse}(FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, typeuse))) = $free_typeuse(typeuse) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_moduletype(moduletype : moduletype) : free @@ -13985,6 +14379,8 @@ syntax instr = | BR_ON_NON_NULL(labelidx) | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_DESC_EQ(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_DESC_EQ_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) | CALL(funcidx) | CALL_REF(typeuse) | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) @@ -14024,13 +14420,17 @@ syntax instr = | `REF.IS_NULL` | `REF.AS_NON_NULL` | `REF.EQ` + | `REF.GET_DESC`(typeidx) | `REF.TEST`(reftype) | `REF.CAST`(reftype) + | `REF.CAST_DESC_EQ`(reftype) | `REF.FUNC`(funcidx) | `REF.I31` | `I31.GET`(sx) | `STRUCT.NEW`(typeidx) | `STRUCT.NEW_DEFAULT`(typeidx) + | `STRUCT.NEW_DESC`(typeidx) + | `STRUCT.NEW_DEFAULT_DESC`(typeidx) | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) | `ARRAY.NEW`(typeidx) @@ -14133,233 +14533,245 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-585.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:599.1-599.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:586.1-586.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:600.1-600.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-587.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:601.1-601.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:588.1-588.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:602.1-602.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:421.1-421.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:427.1-427.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.26 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-442.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-437.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:443.1-443.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:438.1-438.27 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:444.1-444.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:439.1-439.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.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:441.1-441.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-447.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:442.1-442.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:448.1-448.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:443.1-444.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:449.1-450.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:446.1-446.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-447.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-453.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:448.1-449.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:454.1-455.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:450.1-450.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-451.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-453.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.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:454.1-455.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-461.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:457.1-457.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-463.83 + def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_DESC_EQ_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:464.1-465.83 + def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_DESC_EQ_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:467.1-467.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-458.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-468.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:459.1-460.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:469.1-470.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:461.1-461.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-465.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-475.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:467.1-467.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.53 def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-468.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.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:469.1-470.99 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-480.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:472.1-472.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-483.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:484.1-484.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:485.1-485.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:486.1-486.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-478.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:487.1-488.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:480.1-480.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:490.1-490.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:491.1-491.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-483.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-493.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:484.1-484.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:494.1-494.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:485.1-485.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:486.1-486.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:496.1-496.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:487.1-487.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:488.1-488.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:489.1-489.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:490.1-490.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.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:491.1-491.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.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:493.1-493.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.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:494.1-495.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-505.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:496.1-497.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-507.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:498.1-499.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-509.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:500.1-501.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-511.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:502.1-503.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:512.1-513.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:504.1-504.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:505.1-505.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.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:506.1-506.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-516.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.62 def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.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:510.1-510.38 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.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:511.1-511.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.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:512.1-512.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.63 + def $free_instr{typeidx : typeidx}(`REF.GET_DESC`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.67 + def $free_instr{reftype : reftype}(`REF.CAST_DESC_EQ`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:526.1-526.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.30 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:527.1-527.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:517.1-517.33 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:529.1-529.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:519.1-519.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.61 def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.66 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DESC`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.74 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT_DESC`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.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:522.1-522.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-538.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:526.1-526.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:540.1-540.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:527.1-528.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-542.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:529.1-530.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-544.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:531.1-531.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.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:532.1-532.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-546.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:547.1-547.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:534.1-534.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-548.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-536.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-550.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:537.1-538.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:551.1-552.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:539.1-540.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-554.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:542.1-542.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-556.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:543.1-543.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:557.1-557.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:545.1-545.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:559.1-559.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-546.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:560.1-560.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:547.1-547.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:561.1-561.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-549.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-563.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:550.1-550.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-552.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-553.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-567.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:554.1-554.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:568.1-568.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:555.1-555.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-569.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-556.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:570.1-570.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:557.1-558.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-572.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:559.1-560.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:573.1-574.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:561.1-561.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-564.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.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:565.1-566.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.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:567.1-568.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:581.1-582.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:569.1-570.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:583.1-584.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:571.1-572.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-586.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:573.1-574.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-588.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:575.1-575.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:589.1-589.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:590.1-590.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-577.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:591.1-591.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:578.1-579.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:592.1-593.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:580.1-581.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:594.1-595.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:582.1-582.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:596.1-596.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:422.1-422.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:428.1-428.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:590.1-591.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:604.1-605.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*`})) } @@ -14544,7 +14956,7 @@ syntax context = GLOBALS globaltype*, MEMS memtype*, TABLES tabletype*, - FUNCS deftype*, + FUNCS exactdeftype*, DATAS datatype*, ELEMS elemtype*, LOCALS localtype*, @@ -14644,9 +15056,9 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*, `dcs?` : describes?, `dcr?` : descriptor?}: `%~~%`(deftype, comptype) - -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, comptype))) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -14665,11 +15077,11 @@ def $before(typeuse : typeuse, nat : nat) : bool ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec - def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + def $unrollht_{C : context, deftype : deftype}(C, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, (deftype : deftype <: typeuse)))) = $unrolldt(deftype) ;; ../../../../specification/wasm-latest/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, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, _IDX_typeuse(typeidx)))) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) ;; ../../../../specification/wasm-latest/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, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, REC_typeuse(i)))) = C.RECS_context[i] ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { @@ -14682,7 +15094,7 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: - `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + `%|-%:OK`(C, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, typeuse))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:27.1-28.16 @@ -14719,17 +15131,17 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:106.1-108.30 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:113.1-115.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_typeidx.0] = dt) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:110.1-112.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:117.1-119.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:114.1-116.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:121.1-123.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) @@ -14741,106 +15153,130 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:92.1-92.104 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:97.1-97.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:130.1-132.43 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:137.1-139.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:93.1-93.106 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:98.1-98.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:122.1-124.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:129.1-131.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:126.1-128.37 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:133.1-135.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:94.1-94.103 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:99.1-99.103 relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:135.1-137.42 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:142.1-144.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:139.1-141.39 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:146.1-148.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:143.1-146.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:150.1-153.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:97.1-97.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:100.1-100.103 +relation Desctype_ok: `%|-%:OK`(context, desctype) + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:156.1-164.31 + rule _{C : context, `tu_1?` : typeuse?, `tu_2?` : typeuse?, ct : comptype, `ft*` : fieldtype*}: + `%|-%:OK`(C, `%%%`_desctype(DESCRIBES_describes(tu_1)?{tu_1 <- `tu_1?`}, DESCRIPTOR_descriptor(tu_2)?{tu_2 <- `tu_2?`}, ct)) + -- (Typeuse_ok: `%|-%:OK`(C, tu_1))?{tu_1 <- `tu_1?`} + -- if ((tu_1?{tu_1 <- `tu_1?`} = ?()) \/ (ct = STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)))) + -- (Typeuse_ok: `%|-%:OK`(C, tu_2))?{tu_2 <- `tu_2?`} + -- if ((tu_2?{tu_2 <- `tu_2?`} = ?()) \/ (ct = STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)))) + -- Comptype_ok: `%|-%:OK`(C, ct) + +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:103.1-103.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:167.1-176.49 - rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) - -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) - -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} - -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} - -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:98.1-98.126 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:193.1-209.39 + rule _{C : context, `final?` : final?, `tu*` : typeuse*, dct : desctype, i : nat, `dct'*` : desctype*, `tu'**` : typeuse**, `i_1?` : n?, `i_2?` : n?, ct : comptype, `ct_1?` : comptype?, `dcs_1??` : describes??, `tu_1*?` : typeuse*?, `ct_2?` : comptype?, `dcr_2??` : descriptor??, `tu_2*?` : typeuse*?}: + `%|-%:%`(C, SUB_subtype(final?{final <- `final?`}, tu*{tu <- `tu*`}, dct), OK_oktypenat(i)) + -- if (|tu*{tu <- `tu*`}| <= 1) + -- (Typeuse_ok: `%|-%:OK`(C, tu))*{tu <- `tu*`} + -- (if $before(tu, i))*{tu <- `tu*`} + -- (if ($unrollht_(C, _HT_heaptype(`%%`_exacttypeuse(?(), tu))) = SUB_subtype(?(), tu'*{tu' <- `tu'*`}, dct')))*{dct' <- `dct'*`, tu <- `tu*`, `tu'*` <- `tu'**`} + -- if (dct = `%%%`_desctype(DESCRIBES_describes(REC_typeuse(i_1))?{i_1 <- `i_1?`}, DESCRIPTOR_descriptor(REC_typeuse(i_2))?{i_2 <- `i_2?`}, ct)) + -- (if (i_1 < i))?{i_1 <- `i_1?`} + -- (if (C.RECS_context[i_1] = SUB_subtype(final?{final <- `final?`}, tu_1*{tu_1 <- `tu_1*`}, `%%%`_desctype(dcs_1?{dcs_1 <- `dcs_1?`}, ?(DESCRIPTOR_descriptor(REC_typeuse(i))), ct_1))))?{ct_1 <- `ct_1?`, `dcs_1?` <- `dcs_1??`, i_1 <- `i_1?`, `tu_1*` <- `tu_1*?`} + -- (if (C.RECS_context[i_2] = SUB_subtype(final?{final <- `final?`}, tu_2*{tu_2 <- `tu_2*`}, `%%%`_desctype(?(DESCRIBES_describes(REC_typeuse(i))), dcr_2?{dcr_2 <- `dcr_2?`}, ct_2))))?{ct_2 <- `ct_2?`, `dcr_2?` <- `dcr_2??`, i_2 <- `i_2?`, `tu_2*` <- `tu_2*?`} + -- Desctype_ok: `%|-%:OK`(C, dct) + -- (Desctype_sub: `%|-%<:%`(C, dct, dct'))*{dct' <- `dct'*`} + +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:104.1-104.126 relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:188.1-189.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:221.1-222.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypenat(i)) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:191.1-194.49 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:224.1-227.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`},)), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},)), OK_oktypenat(i + 1)) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:99.1-99.102 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:105.1-105.102 relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:197.1-201.14 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:230.1-234.14 rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`},))) -- if (i < n) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:102.1-102.108 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:108.1-108.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:181.1-183.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:186.1-188.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:185.1-187.38 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:190.1-192.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:189.1-192.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:194.1-197.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:103.1-103.107 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:109.1-109.108 +relation Desctype_sub: `%|-%<:%`(context, desctype, desctype) + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:199.1-203.37 + rule _{C : context, `tu_11?` : typeuse?, `tu_12?` : typeuse?, ct_1 : comptype, `tu_21?` : typeuse?, `tu_22?` : typeuse?, ct_2 : comptype}: + `%|-%<:%`(C, `%%%`_desctype(DESCRIBES_describes(tu_11)?{tu_11 <- `tu_11?`}, DESCRIPTOR_descriptor(tu_12)?{tu_12 <- `tu_12?`}, ct_1), `%%%`_desctype(DESCRIBES_describes(tu_21)?{tu_21 <- `tu_21?`}, DESCRIPTOR_descriptor(tu_22)?{tu_22 <- `tu_22?`}, ct_2)) + -- (Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), tu_11)), _HT_heaptype(`%%`_exacttypeuse(?(), tu_21))))?{tu_11 <- `tu_11?`, tu_21 <- `tu_21?`} + -- (Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), tu_12)), _HT_heaptype(`%%`_exacttypeuse(?(), tu_22))))?{tu_12 <- `tu_12?`, tu_22 <- `tu_22?`} + -- Comptype_sub: `%|-%<:%`(C, ct_1, ct_2) + +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:110.1-110.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:195.1-197.66 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:206.1-208.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:199.1-202.49 - rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:210.1-213.57 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, desctype : desctype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) - -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) + -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, desctype)) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), typeuse*{typeuse <- `typeuse*`}[i])), _HT_heaptype(`%%`_exacttypeuse(?(), (deftype_2 : deftype <: typeuse)))) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:9.1-9.104 relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) @@ -14848,167 +15284,172 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:23.1-27.48 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:23.1-25.48 + rule `exact-l`{C : context, typeuse : typeuse, heaptype : heaptype}: + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), typeuse)), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), typeuse)), heaptype) + + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:27.1-31.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:29.1-30.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:33.1-34.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:32.1-33.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:36.1-37.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:35.1-36.20 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:39.1-40.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:38.1-39.19 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:42.1-43.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:41.1-43.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:45.1-47.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype : deftype <: typeuse))), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:45.1-47.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:49.1-51.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype : deftype <: typeuse))), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:49.1-51.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:53.1-55.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype : deftype <: typeuse))), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:53.1-55.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:57.1-59.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype_1 : deftype <: typeuse))), _HT_heaptype(`%%`_exacttypeuse(?(), (deftype_2 : deftype <: typeuse)))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:57.1-59.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:61.1-63.57 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, _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(typeidx))), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: typeuse))), heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:61.1-63.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:65.1-67.57 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, _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(typeidx)))) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, _HT_heaptype(`%%`_exacttypeuse(?(), (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: typeuse)))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:65.1-67.51 - rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: - `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) - -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},)))) + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-71.63 + rule `rec-struct`{C : context, i : n, `final?` : final?, `dcs?` : describes?, `dcr?` : descriptor?, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), STRUCT_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-71.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.49 rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: - `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) - -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), ARRAY_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `%%%`_desctype(?(), ?(), ARRAY_comptype(fieldtype)))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.51 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:77.1-79.51 rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) - -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)))) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), FUNC_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `%%%`_desctype(?(), ?(), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:77.1-79.43 - rule `rec-sub`{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-latest/2.2-validation.subtyping.spectec:81.1-83.49 + rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, desctype : desctype}: + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), _HT_heaptype(`%%`_exacttypeuse(?(), typeuse*{typeuse <- `typeuse*`}[j]))) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, desctype)) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-84.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:85.1-88.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:86.1-89.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:90.1-93.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:91.1-94.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:95.1-98.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:96.1-99.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:100.1-103.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:101.1-102.23 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:105.1-106.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:105.1-107.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:109.1-111.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:109.1-111.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:113.1-115.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:114.1-116.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:118.1-120.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:118.1-120.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:122.1-124.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:122.1-124.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:126.1-128.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:126.1-127.22 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:130.1-131.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:132.1-132.115 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:136.1-136.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:135.1-137.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:139.1-141.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:150.1-150.119 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:154.1-154.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:162.1-164.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:167.1-169.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:166.1-168.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:171.1-173.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:151.1-151.117 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:155.1-155.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:171.1-173.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:176.1-178.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:175.1-178.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:180.1-183.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) @@ -15043,6 +15484,13 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec +relation Expand_desc: `%~%`(deftype, desctype) + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec + rule _{deftype : deftype, desctype : desctype, `final?` : final?, `typeuse*` : typeuse*}: + `%~%`(deftype, desctype) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, desctype)) + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec syntax oktypeidx = | OK(typeidx) @@ -15050,24 +15498,28 @@ syntax oktypeidx = ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + rule _{C : context, `final?` : final?, `x*` : idx*, dct : desctype, x_0 : idx, `dct'*` : desctype*, `yy**` : typeuse**, `x_1?` : idx?, `x_2?` : idx?, ct : comptype, `ct_1?` : comptype?, `dcs_1??` : describes??, `yy_1*?` : typeuse*?, `ct_2?` : comptype?, `dcr_2??` : descriptor??, `yy_2*?` : typeuse*?}: + `%|-%:%`(C, SUB_subtype(final?{final <- `final?`}, _IDX_typeuse(x)*{x <- `x*`}, dct), 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(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- (if ($unrolldt(C.TYPES_context[x!`%`_idx.0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, dct')))*{dct' <- `dct'*`, x <- `x*`, `yy*` <- `yy**`} + -- if (dct = `%%%`_desctype(DESCRIBES_describes(_IDX_typeuse(x_1))?{x_1 <- `x_1?`}, DESCRIPTOR_descriptor(_IDX_typeuse(x_2))?{x_2 <- `x_2?`}, ct)) + -- (if (x_1!`%`_idx.0 < x_0!`%`_idx.0))?{x_1 <- `x_1?`} + -- (if ($unrolldt(C.TYPES_context[x_1!`%`_idx.0]) = SUB_subtype(final?{final <- `final?`}, yy_1*{yy_1 <- `yy_1*`}, `%%%`_desctype(dcs_1?{dcs_1 <- `dcs_1?`}, ?(DESCRIPTOR_descriptor(C.TYPES_context[x_0!`%`_idx.0] : deftype <: typeuse)), ct_1))))?{ct_1 <- `ct_1?`, `dcs_1?` <- `dcs_1??`, x_1 <- `x_1?`, `yy_1*` <- `yy_1*?`} + -- (if ($unrolldt(C.TYPES_context[x_2!`%`_idx.0]) = SUB_subtype(final?{final <- `final?`}, yy_2*{yy_2 <- `yy_2*`}, `%%%`_desctype(?(DESCRIBES_describes(C.TYPES_context[x_0!`%`_idx.0] : deftype <: typeuse)), dcr_2?{dcr_2 <- `dcr_2?`}, ct_2))))?{ct_2 <- `ct_2?`, `dcr_2?` <- `dcr_2??`, x_2 <- `x_2?`, `yy_2*` <- `yy_2*?`} + -- Desctype_ok: `%|-%:OK`(C, dct) + -- (Desctype_sub: `%|-%<:%`(C, dct, dct'))*{dct' <- `dct'*`} ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:96.1-96.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:102.1-102.126 relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:179.1-180.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:212.1-213.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypeidx(x)) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:182.1-185.48 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:215.1-218.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)) @@ -15135,8 +15587,8 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-latest/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, `exact?` : exact?, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, 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*`},))) @@ -15223,9 +15675,9 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec - rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, FUNC_externtype(deftype_1 : deftype <: typeuse), FUNC_externtype(deftype_2 : deftype <: typeuse)) - -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + rule func{C : context, exactdeftype_1 : exactdeftype, exactdeftype_2 : exactdeftype}: + `%|-%<:%`(C, FUNC_externtype(exactdeftype_1 : exactdeftype <: exacttypeuse), FUNC_externtype(exactdeftype_2 : exactdeftype <: exacttypeuse)) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(exactdeftype_1 : exactdeftype <: exacttypeuse), _HT_heaptype(exactdeftype_2 : exactdeftype <: exacttypeuse)) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -15375,64 +15827,94 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(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-latest/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}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:96.1-105.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, rt_3 : 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_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - ;; ../../../../specification/wasm-latest/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}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:107.1-116.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, rt_3 : 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_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:115.1-117.45 - rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:118.1-128.34 + rule br_on_cast_desc_eq{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, `exact?` : exact?, y : idx, rt : reftype, `null?` : null?, x : idx, `dcs?` : describes?, ct : comptype, rt_3 : reftype}: + `%|-%:%`(C, BR_ON_CAST_DESC_EQ_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype) REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],), [], `%`_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)],)) + -- if (rt_2 = REF_reftype(null?{null <- `null?`}, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:130.1-140.49 + rule br_on_cast_desc_eq_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, `exact?` : exact?, y : idx, rt : reftype, `null?` : null?, x : idx, `dcs?` : describes?, ct : comptype, rt_3 : reftype}: + `%|-%:%`(C, BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype) REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)],))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)],)) + -- if (rt_2 = REF_reftype(null?{null <- `null?`}, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:145.1-148.37 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*, `exact?` : exact?, dt : deftype}: `%|-%:%`(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*`},))) + -- if (C.FUNCS_context[x!`%`_idx.0] = `%%`_exactdeftype(exact?{exact <- `exact?`}, dt)) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:119.1-121.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:150.1-152.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*`},))) + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:123.1-127.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:154.1-158.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:129.1-132.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:160.1-163.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/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*}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:166.1-172.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `exact?` : exact?, dt : deftype, `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.FUNCS_context[x!`%`_idx.0] = `%%`_exactdeftype(exact?{exact <- `exact?`}, dt)) + -- Expand: `%~~%`(dt, `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-latest/2.3-validation.instructions.spectec:143.1-148.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:175.1-180.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*`},))) + `%|-%:%`(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), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:151.1-159.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:183.1-191.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)) @@ -15442,484 +15924,508 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- 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-latest/2.3-validation.instructions.spectec:166.1-169.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:198.1-201.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:171.1-173.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:203.1-205.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:175.1-179.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:207.1-211.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 [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ 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-latest/2.3-validation.instructions.spectec:202.1-204.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:234.1-236.31 rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-latest/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) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:238.1-241.20 + rule `ref.func`{C : context, x : idx, edt : exactdeftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(edt : exactdeftype <: exacttypeuse))],))) + -- if (C.FUNCS_context[x!`%`_idx.0] = edt) -- if (x <- C.REFS_context) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:211.1-212.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:243.1-244.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:214.1-216.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:246.1-248.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([I32_valtype],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:218.1-220.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:250.1-252.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([REF_valtype(?(), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:222.1-223.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:254.1-255.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:225.1-229.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:257.1-259.61 + rule `ref.get_desc`{C : context, x : idx, `exact?` : exact?, y : idx, `dcs?` : describes?, ct : comptype}: + `%|-%:%`(C, `REF.GET_DESC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:261.1-265.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([I32_valtype],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:231.1-235.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:267.1-271.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:240.1-241.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:273.1-279.50 + rule `ref.cast_desc_eq`{C : context, rt : reftype, ht : heaptype, `exact?` : exact?, y : idx, `null?` : null?, x : idx, `dcs?` : describes?, ct : comptype}: + `%|-%:%`(C, `REF.CAST_DESC_EQ`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht) REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],), [], `%`_resulttype([(rt : reftype <: valtype)],))) + -- if (rt = REF_reftype(null?{null <- `null?`}, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))), ht) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:284.1-285.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:246.1-248.45 - rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:290.1-292.58 + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `dcs?` : describes?, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`},), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) - ;; ../../../../specification/wasm-latest/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*`},))) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:294.1-297.48 + rule `struct.new_default`{C : context, x : idx, `dcs?` : describes?, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:258.1-262.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:299.1-301.76 + rule `struct.new_desc`{C : context, x : idx, `zt*` : storagetype*, y : idx, `dcs?` : describes?, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW_DESC`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(y))))],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:303.1-306.48 + rule `struct.new_default_desc`{C : context, x : idx, y : idx, `dcs?` : describes?, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT_DESC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(y))))],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:311.1-315.41 rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, 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)],))) + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x))))],), [], `%`_resulttype([$unpack(zt)],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},))) -- if (ft*{ft <- `ft*`}[i!`%`_fieldidx.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:264.1-267.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:317.1-320.24 rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)],), [], `%`_resulttype([],))) + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x)))) $unpack(zt)],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},))) -- if (ft*{ft <- `ft*`}[i!`%`_fieldidx.0] = `%%`_fieldtype(?(MUT_mut), zt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:272.1-274.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:325.1-327.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))],))) + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:276.1-279.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:329.1-332.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))],))) + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt),) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:281.1-283.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:334.1-336.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))],))) + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{},), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:285.1-288.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:338.1-341.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))],))) + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:290.1-294.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:343.1-347.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))],))) + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:296.1-299.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:349.1-352.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)],))) + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:301.1-303.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:354.1-356.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([],))) + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x)))) I32_valtype $unpack(zt)],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:305.1-306.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:358.1-359.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:308.1-310.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:361.1-363.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([],))) + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x)))) I32_valtype $unpack(zt) I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:312.1-316.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:365.1-369.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([],))) + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x_1)))) I32_valtype REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:318.1-321.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:371.1-374.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([],))) + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:323.1-327.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:376.1-380.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([],))) + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:332.1-334.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:385.1-387.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:336.1-338.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:389.1-391.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:343.1-345.28 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:396.1-398.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:347.1-349.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:400.1-402.29 rule `local.set`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:351.1-353.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:404.1-406.29 rule `local.tee`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:358.1-360.30 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:411.1-413.30 rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:362.1-364.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:415.1-417.29 rule `global.set`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(MUT_mut), t)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:369.1-371.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:422.1-424.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:373.1-375.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:426.1-428.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:377.1-379.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:430.1-432.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:381.1-383.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:434.1-436.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([(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 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:438.1-440.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:389.1-393.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:442.1-446.36 rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:395.1-399.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:448.1-452.36 rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_idx.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:401.1-403.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:454.1-456.24 rule `elem.drop`{C : context, x : idx, rt : reftype}: `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.ELEMS_context[x!`%`_idx.0] = rt) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:416.1-418.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:469.1-471.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:420.1-422.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:473.1-475.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:424.1-426.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:477.1-479.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:428.1-431.38 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:481.1-484.38 rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:433.1-436.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:486.1-489.24 rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:438.1-440.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:491.1-493.24 rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:451.1-454.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:504.1-507.44 rule `load-num`{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-latest/2.3-validation.instructions.spectec:456.1-459.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:509.1-512.36 rule `load-pack`{C : context, Inn : Inn, K : K, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(K,), 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, K) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:470.1-473.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:523.1-526.44 rule `store-num`{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-latest/2.3-validation.instructions.spectec:475.1-478.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:528.1-531.36 rule `store-pack`{C : context, Inn : Inn, K : K, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(K,),)), 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, K) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:480.1-483.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:533.1-536.47 rule `vload-num`{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-latest/2.3-validation.instructions.spectec:485.1-488.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:538.1-541.41 rule `vload-pack`{C : context, N : N, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(N,), M, 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, (N * M!`%`_M.0)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:490.1-493.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:543.1-546.36 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:495.1-498.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:548.1-551.36 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:500.1-504.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:553.1-557.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:506.1-509.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:559.1-562.47 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:511.1-515.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:564.1-568.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:520.1-521.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:573.1-574.33 rule const{C : context, nt : numtype, c_nt : num_(nt)}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:523.1-524.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:576.1-577.34 rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:526.1-527.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:579.1-580.39 rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:529.1-530.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:582.1-583.39 rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:532.1-533.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:585.1-586.40 rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:535.1-536.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:588.1-589.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:541.1-542.35 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:594.1-595.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:544.1-545.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:597.1-598.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:547.1-548.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:600.1-601.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:550.1-551.55 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:603.1-604.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:553.1-554.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:606.1-607.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:556.1-557.37 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:609.1-610.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:559.1-560.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:612.1-613.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:562.1-563.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:615.1-616.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:565.1-566.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:618.1-619.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:568.1-569.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:621.1-622.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:571.1-572.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:624.1-625.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:574.1-575.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:627.1-628.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:577.1-578.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:630.1-631.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:580.1-582.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:633.1-635.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:584.1-585.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:637.1-638.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:587.1-589.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:640.1-642.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:591.1-593.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:644.1-646.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:595.1-596.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:648.1-649.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:598.1-599.57 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:651.1-652.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:601.1-602.64 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:654.1-655.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:604.1-605.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:657.1-658.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:607.1-608.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:660.1-661.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:613.1-614.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:666.1-667.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:616.1-618.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:669.1-671.46 rule instr{C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, [instr], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:621.1-625.82 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:674.1-678.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_1 <- `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*`},))) -- Instrs_ok: `%|-%:%`(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*`},))) -- (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-latest/2.3-validation.instructions.spectec:627.1-631.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:680.1-684.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:634.1-637.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:687.1-690.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*`},))) @@ -15970,6 +16476,14 @@ relation Instr_const: `%|-%CONST`(context, instr) rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec + rule `struct.new_desc`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DESC`_instr(x)) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec + rule `struct.new_default_desc`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT_DESC`_instr(x)) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) @@ -16072,10 +16586,10 @@ relation Local_ok: `%|-%:%`(context, local, localtype) -- Nondefaultable: `|-%NONDEFAULTABLE`(t,) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec -relation Func_ok: `%|-%:%`(context, func, deftype) +relation Func_ok: `%|-%:%`(context, func, exactdeftype) ;; ../../../../specification/wasm-latest/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]) + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), `%%`_exactdeftype(?(EXACT_exact), 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 [], 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 [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) @@ -16128,9 +16642,10 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec - rule _{C : context, x : idx}: + rule _{C : context, x : idx, `exact?` : exact?, dt : deftype}: `%|-%:OK`(C, START_start(x)) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) + -- if (C.FUNCS_context[x!`%`_idx.0] = `%%`_exactdeftype(exact?{exact <- `exact?`}, dt)) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) @@ -16162,9 +16677,9 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- if (C.TABLES_context[x!`%`_idx.0] = tt) ;; ../../../../specification/wasm-latest/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, x : idx, edt : exactdeftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype(edt : exactdeftype <: exacttypeuse)) + -- if (C.FUNCS_context[x!`%`_idx.0] = edt) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -16176,13 +16691,13 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:138.1-138.100 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:139.1-139.100 relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:183.1-184.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:184.1-185.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:186.1-189.54 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:187.1-190.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) @@ -16192,13 +16707,13 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:137.1-137.98 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:138.1-138.98 relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:175.1-176.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:176.1-177.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:178.1-181.49 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:179.1-182.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) @@ -16217,28 +16732,28 @@ def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-latest/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*}: + 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*, `edt*` : exactdeftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `edt_I*` : exactdeftype*, `x*` : idx*}: `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`},), `%`_list(import*{import <- `import*`},), `%`_list(tag*{tag <- `tag*`},), `%`_list(global*{global <- `global*`},), `%`_list(mem*{mem <- `mem*`},), `%`_list(table*{table <- `table*`},), `%`_list(func*{func <- `func*`},), `%`_list(data*{data <- `data*`},), `%`_list(elem*{elem <- `elem*`},), start?{start <- `start?`}, `%`_list(export*{export <- `export*`},)), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- (Import_ok: `%|-%:%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- (Func_ok: `%|-%:%`(C, func, edt))*{edt <- `edt*`, func <- `func*`} -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], 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 [], RECS []}) - -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, 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*`}, RECS []}) + -- if (C' = {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS edt_I*{edt_I <- `edt_I*`} ++ edt*{edt <- `edt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, export*{export <- `export*`}))) -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) - -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (edt_I*{edt_I <- `edt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec syntax relaxed2 = @@ -17432,6 +17947,7 @@ syntax fieldval = syntax structinst = { TYPE deftype, + DESC structaddr?, FIELDS fieldval* } @@ -17817,17 +18333,17 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../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))) + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), (dt : deftype <: typeuse))))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../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))) + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), (dt : deftype <: typeuse))))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../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))) + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), (dt : deftype <: typeuse))))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:53.1-55.24 @@ -17915,7 +18431,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:122.1-124.30 rule func{s : store, a : addr, funcinst : funcinst}: - `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype(funcinst.TYPE_funcinst : deftype <: typeuse)) + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype(`%%`_exacttypeuse(?(EXACT_exact), (funcinst.TYPE_funcinst : deftype <: typeuse)))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:126.1-130.37 @@ -18045,11 +18561,11 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-latest/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), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))) CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-latest/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), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))) RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: @@ -18368,6 +18884,54 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_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-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [TRAP_instr]) + -- if (ref_2 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-succeed-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(?(NULL_null), ht))]), [(ref_1 : ref <: instr) BR_instr(l)]) + -- otherwise + -- if (ref_1 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-succeed-addr`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype, a : addr, a' : addr}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr) BR_instr(l)]) + -- otherwise + -- if (ref_1 = `REF.STRUCT_ADDR`_ref(a)) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + -- if (ref_2 = `REF.STRUCT_ADDR`_ref(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-fail`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [TRAP_instr]) + -- if (ref_2 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-succeed-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(?(NULL_null), ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-succeed-addr`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype, a : addr, a' : addr}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.STRUCT_ADDR`_ref(a)) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + -- if (ref_2 = `REF.STRUCT_ADDR`_ref(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-fail`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr) BR_instr(l)]) + -- otherwise + ;; ../../../../specification/wasm-latest/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)]) @@ -18692,12 +19256,51 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.get_desc-null`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `REF.GET_DESC`_instr(x)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.get_desc-struct`{z : state, a : addr, x : idx, a' : addr}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `REF.GET_DESC`_instr(x)]), [`REF.STRUCT_ADDR`_instr(a')]) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-null`{z : state, ref_1 : ref, ref_2 : ref, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(null?{null <- `null?`}, ht))]), [TRAP_instr]) + -- if (ref_2 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-succeed-null`{z : state, ref_1 : ref, ref_2 : ref, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(?(NULL_null), ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-succeed-addr`{z : state, ref_1 : ref, ref_2 : ref, `null?` : null?, ht : heaptype, a : addr, a' : addr}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.STRUCT_ADDR`_ref(a)) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + -- if (ref_2 = `REF.STRUCT_ADDR`_ref(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-fail`{z : state, ref_1 : ref, ref_2 : ref, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(null?{null <- `null?`}, ht))]), [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 ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `struct.new_default_desc`{z : state, ref : ref, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) `STRUCT.NEW_DEFAULT_DESC`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [(ref : ref <: instr) `STRUCT.NEW_DESC`_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-latest/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) @@ -18905,11 +19508,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_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:173.1-174.48 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:215.1-216.48 rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), `%;%`_config(z, [TRAP_instr])) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:176.1-182.61 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:218.1-224.61 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)]), `%;%`_config(z, [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])])) -- if ($funcinst(z)[a] = fi) @@ -18917,7 +19520,7 @@ relation Step: `%~>%`(config, config) -- 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-latest/4.3-execution.instructions.spectec:184.1-190.59 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:226.1-232.59 rule `call_ref-hostfunc-res`{s : store, f : frame, n : n, `val*` : val*, a : addr, yy : typeuse, s' : store, result : result, fi : funcinst, `t_1*` : valtype*, m : m, `t_2*` : valtype*, hf : text}: `%~>%`(`%;%`_config(`%;%`_state(s, f), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), `%;%`_config(`%;%`_state(s', f), $lift_result(result))) -- if ($funcinst(`%;%`_state(s, f))[a] = fi) @@ -18925,7 +19528,7 @@ relation Step: `%~>%`(config, config) -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) -- if (RES_hostcallresult(s', result) <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:192.1-198.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:234.1-240.49 rule `call_ref-hostfunc-div`{s : store, f : frame, n : n, `val*` : val*, a : addr, yy : typeuse, fi : funcinst, `t_1*` : valtype*, m : m, `t_2*` : valtype*, hf : text}: `%~>%`(`%;%`_config(`%;%`_state(s, f), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), `%;%`_config(`%;%`_state(s, f), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) -- if ($funcinst(`%;%`_state(s, f))[a] = fi) @@ -18933,131 +19536,143 @@ relation Step: `%~>%`(config, config) -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) -- if (BOT_hostcallresult <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:242.1-246.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:284.1-288.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:320.1-321.56 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:362.1-363.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:333.1-334.58 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:375.1-376.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:347.1-349.33 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:389.1-391.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:351.1-353.32 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:393.1-395.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:362.1-365.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:404.1-407.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:367.1-368.87 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:409.1-410.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:428.1-429.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:470.1-471.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:512.1-515.60 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:554.1-557.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:517.1-521.29 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:559.1-563.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:523.1-526.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:565.1-568.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:528.1-532.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:570.1-574.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:534.1-537.63 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:576.1-579.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:539.1-542.31 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:581.1-584.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:545.1-548.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:587.1-590.52 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 : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:550.1-555.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:592.1-597.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!`%`_M.0 : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c)[j!`%`_laneidx.0]!`%`_lane_.0,))) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:564.1-567.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:606.1-609.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:569.1-570.84 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:611.1-612.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:630.1-631.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:672.1-673.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:707.1-711.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:778.1-782.75 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*`}}) + -- if (si = {TYPE $type(z, x), DESC ?(), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:728.1-729.55 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:789.1-791.47 + rule `struct.new_desc-null`{z : state, n : n, `val*` : val*, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.NULL_ADDR`_instr `STRUCT.NEW_DESC`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`},))) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:793.1-797.74 + rule `struct.new_desc-struct`{z : state, n : n, `val*` : val*, a' : addr, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.STRUCT_ADDR`_instr(a') `STRUCT.NEW_DESC`_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), DESC ?(a'), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:814.1-815.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_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:731.1-734.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:817.1-820.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `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!`%`_fieldidx.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_fieldidx.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:747.1-752.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:833.1-838.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:792.1-793.66 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:878.1-879.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:795.1-797.39 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:881.1-883.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:799.1-802.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:885.1-888.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))) @@ -19455,13 +20070,13 @@ syntax decl = ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:273.1-273.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:275.1-275.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -19469,13 +20084,13 @@ def $typesd(decl*) : type* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:277.1-277.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:279.1-279.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -19483,13 +20098,13 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:281.1-281.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:283.1-283.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -19497,13 +20112,13 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:285.1-285.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:287.1-287.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -19511,13 +20126,13 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:289.1-289.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:291.1-291.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -19525,13 +20140,13 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:293.1-293.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:295.1-295.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -19539,13 +20154,13 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:297.1-297.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:299.1-299.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -19553,13 +20168,13 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:301.1-301.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:303.1-303.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -19567,13 +20182,13 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:269.1-269.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:305.1-305.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:307.1-307.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -19581,13 +20196,13 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:309.1-309.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:311.1-311.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -19595,13 +20210,13 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:271.1-271.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:313.1-313.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:314.1-314.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:315.1-315.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -19617,9 +20232,9 @@ def $ordered(decl*) : bool ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context,) ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec - rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `t**` : valtype**, `t'*?` : valtype*?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `edt*` : exactdeftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `t**` : valtype**, `t'*?` : valtype*?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `dt_F*` : deftype*, `exact?*` : exact?*, `t_1*` : valtype*, `t_2*` : valtype*}: `|-%:OK`(C,) - -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS `%`_resulttype(t*{t <- `t*`},)*{`t*` <- `t**`}, RETURN `%`_resulttype(t'*{t' <- `t'*`},)?{`t'*` <- `t'*?`}, REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS edt*{edt <- `edt*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS `%`_resulttype(t*{t <- `t*`},)*{`t*` <- `t**`}, RETURN `%`_resulttype(t'*{t' <- `t'*`},)?{`t'*` <- `t'*?`}, REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1],), `%`_resulttype([t_2],))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t*{t <- `t*`},)))*{`t*` <- `t**`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t'*{t' <- `t'*`},)))?{`t'*` <- `t'*?`} - -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + -- (if (x!`%`_idx.0 < |edt*{edt <- `edt*`}|))*{x <- `x*`} ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Localval_ok: `%|-%:%`(store, val?, localtype) @@ -19671,12 +20287,12 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec - rule _{s : store, `deftype*` : deftype*, `tagaddr*` : tagaddr*, `globaladdr*` : globaladdr*, `memaddr*` : memaddr*, `tableaddr*` : tableaddr*, `funcaddr*` : funcaddr*, `dataaddr*` : dataaddr*, `elemaddr*` : elemaddr*, `exportinst*` : exportinst*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `memtype*` : memtype*, `tabletype*` : tabletype*, `deftype_F*` : deftype*, `datatype*` : datatype*, `elemtype*` : elemtype*, k : nat, `subtype*` : subtype*}: - `%|-%:%`(s, {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 tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i,)^(i_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + `%;%|-%:%`(s, C, CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Typeuse_ok: `%|-%:OK`(C, yy) -- Expand_use: `%~~_%%`(yy, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:20.1-26.42 rule return_call_ref{s : store, C : context, yy : typeuse, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%;%|-%:%`(s, C, RETURN_CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + `%;%|-%:%`(s, C, RETURN_CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- Typeuse_ok: `%|-%:OK`(C, yy) -- Expand_use: `%~~_%%`(yy, C, `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*`},))) @@ -19822,15 +20438,16 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}, dt) -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) - -- Func_ok: `%|-%:%`(C, func, dt') + -- Func_ok: `%|-%:%`(C, func, `%%`_exactdeftype(?(EXACT_exact), dt')) -- Deftype_sub: `%|-%<:%`(C, dt', dt) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Structinst_ok: `%|-%:OK`(store, structinst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec - rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + rule _{s : store, dt : deftype, `a?` : addr?, `fv*` : fieldval*, `dcs?` : describes?, `dcr?` : descriptor?, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:OK`(s, {TYPE dt, DESC a?{a <- `a?`}, FIELDS fv*{fv <- `fv*`}}) + -- Expand_desc: `%~%`(dt, `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) + -- if (dcr?{dcr <- `dcr?`} = DESCRIPTOR_descriptor(s.STRUCTS_store[a].TYPE_structinst : deftype <: typeuse)?{a <- `a?`}) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec @@ -19853,30 +20470,35 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rec { -;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:226.1-227.50 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:227.1-228.50 relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:240.1-243.35 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:241.1-244.35 rule trans{fv_1 : fieldval, s : store, fv_2 : fieldval, fv' : fieldval}: `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:245.1-248.20 - rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:246.1-249.20 + rule `ref.struct-field`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},))) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:250.1-252.42 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:251.1-253.31 + rule `ref.struct-desc`{a : addr, s : store, a' : addr}: + `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a')) + -- if (s.STRUCTS_store[a].DESC_structinst = ?(a')) + + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:255.1-257.42 rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:254.1-255.44 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:259.1-260.44 rule `ref.exn`{a : addr, s : store, i : nat}: `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:257.1-258.28 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:262.1-263.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) } @@ -19969,8 +20591,8 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec - rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + rule _{dt : deftype, `a?` : addr?, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%<=%`({TYPE dt, DESC a?{a <- `a?`}, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, DESC a?{a <- `a?`}, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} @@ -20358,7 +20980,9 @@ grammar Bheaptype : heaptype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} ht:Babsheaptype => ht ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + prod{x : idx} {{0x62} {x:Btypeidx}} => _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))) + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse($s33_to_u32(x33)))) -- if (x33!`%`_s33.0 >= (0 : nat <:> int)) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec @@ -20419,14 +21043,29 @@ grammar Bcomptype : comptype ;; ../../../../specification/wasm-latest/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-latest/5.2-binary.types.spectec +grammar Bdescribes : describes + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x : idx} {{0x4C} {x:Btypeidx}} => DESCRIBES_describes(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec +grammar Bdescriptor : descriptor + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x : idx} {{0x4D} {x:Btypeidx}} => DESCRIPTOR_descriptor(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec +grammar Bdesctype : desctype + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype} {{dcs:Bdescribes?{dcs <- `dcs?`}} {dcr:Bdescriptor?{dcr <- `dcr?`}} {ct:Bcomptype}} => `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct) + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bsubtype : subtype ;; ../../../../specification/wasm-latest/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*, dct : desctype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {dct:Bdesctype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, dct) ;; ../../../../specification/wasm-latest/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*, dct : desctype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {dct:Bdesctype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, dct) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + prod{dct : desctype} dct:Bdesctype => SUB_subtype(?(FINAL_final), [], dct) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Brectype : rectype @@ -20469,7 +21108,9 @@ grammar Btabletype : tabletype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bexterntype : externtype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(`%%`_exacttypeuse(?(), _IDX_typeuse(x))) + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x : idx} {{0x20} {x:Btypeidx}} => FUNC_externtype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec @@ -20528,7 +21169,7 @@ grammar Blaneidx : laneidx ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:793.1-807.71 +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:802.1-816.71 grammar Binstr : instr ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -20582,949 +21223,963 @@ grammar Binstr : instr 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-latest/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)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:71.5-71.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:59.5-60.108 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(37,):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_DESC_EQ_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:61.5-62.113 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(38,):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_DESC_EQ_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-latest/5.3-binary.instructions.spectec:75.5-75.36 prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:72.5-72.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:76.5-76.36 prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:73.5-73.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:77.5-77.36 prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:77.5-77.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:81.5-81.38 prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:78.5-78.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:82.5-82.38 prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:85.5-85.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:89.5-89.36 prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:86.5-86.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:90.5-90.36 prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:87.5-87.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:91.5-91.58 prod{x : idx, y : idx} {{0xFC} {`%`_u32(12,):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:88.5-88.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:92.5-92.43 prod{x : idx} {{0xFC} {`%`_u32(13,):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:89.5-89.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:93.5-93.67 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14,):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:90.5-90.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:94.5-94.45 prod{x : idx} {{0xFC} {`%`_u32(15,):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:91.5-91.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:95.5-95.45 prod{x : idx} {{0xFC} {`%`_u32(16,):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:92.5-92.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:96.5-96.45 prod{x : idx} {{0xFC} {`%`_u32(17,):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:105.5-105.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:109.5-109.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:106.5-106.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:110.5-110.41 prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:107.5-107.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:111.5-111.41 prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:108.5-108.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:112.5-112.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:109.5-109.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:113.5-113.50 prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:110.5-110.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:114.5-114.50 prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:111.5-111.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:115.5-115.51 prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:112.5-112.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:116.5-116.51 prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:113.5-113.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:117.5-117.50 prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:114.5-114.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:118.5-118.50 prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:115.5-115.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:119.5-119.51 prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:116.5-116.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:120.5-120.51 prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:117.5-117.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:121.5-121.51 prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:118.5-118.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:122.5-122.51 prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:119.5-119.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:123.5-123.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:120.5-120.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:124.5-124.42 prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:121.5-121.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:125.5-125.42 prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:122.5-122.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:126.5-126.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:123.5-123.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:127.5-127.45 prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:124.5-124.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:128.5-128.46 prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:125.5-125.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:129.5-129.45 prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:126.5-126.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:130.5-130.46 prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:127.5-127.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:131.5-131.46 prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:128.5-128.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:132.5-132.36 prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:129.5-129.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:133.5-133.36 prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:130.5-130.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:134.5-134.56 prod{x : idx, y : idx} {{0xFC} {`%`_u32(8,):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:131.5-131.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:135.5-135.42 prod{x : idx} {{0xFC} {`%`_u32(9,):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:132.5-132.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:136.5-136.64 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10,):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:133.5-133.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:137.5-137.44 prod{x : idx} {{0xFC} {`%`_u32(11,):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:140.5-140.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:144.5-144.37 prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:141.5-141.24 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:145.5-145.24 prod 0xD1 => `REF.IS_NULL`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:142.5-142.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:146.5-146.34 prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:143.5-143.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:147.5-147.19 prod 0xD3 => `REF.EQ`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:144.5-144.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:148.5-148.28 prod 0xD4 => `REF.AS_NON_NULL`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:145.5-145.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:149.5-149.51 prod{ht : heaptype} {{0xFB} {`%`_u32(20,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:146.5-146.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:150.5-150.56 prod{ht : heaptype} {{0xFB} {`%`_u32(21,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:147.5-147.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:151.5-151.51 prod{ht : heaptype} {{0xFB} {`%`_u32(22,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:148.5-148.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:152.5-152.56 prod{ht : heaptype} {{0xFB} {`%`_u32(23,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:152.5-152.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:153.5-153.46 + prod{x : idx} {{0xFB} {`%`_u32(34,):Bu32} {x:Btypeidx}} => `REF.GET_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:154.5-154.59 + prod{ht : heaptype} {{0xFB} {`%`_u32(35,):Bu32} {ht:Bheaptype}} => `REF.CAST_DESC_EQ`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:155.5-155.64 + prod{ht : heaptype} {{0xFB} {`%`_u32(36,):Bu32} {ht:Bheaptype}} => `REF.CAST_DESC_EQ`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:159.5-159.43 prod{x : idx} {{0xFB} {`%`_u32(0,):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:153.5-153.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:160.5-160.51 prod{x : idx} {{0xFB} {`%`_u32(1,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:154.5-154.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:161.5-161.49 + prod{x : idx} {{0xFB} {`%`_u32(32,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:162.5-162.57 + prod{x : idx} {{0xFB} {`%`_u32(33,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:163.5-163.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:155.5-155.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:164.5-164.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:156.5-156.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:165.5-165.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:157.5-157.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:166.5-166.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:161.5-161.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:170.5-170.42 prod{x : idx} {{0xFB} {`%`_u32(6,):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:162.5-162.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:171.5-171.50 prod{x : idx} {{0xFB} {`%`_u32(7,):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:163.5-163.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:172.5-172.57 prod{x : idx, n : n} {{0xFB} {`%`_u32(8,):Bu32} {x:Btypeidx} {`%`_u32(n,):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:164.5-164.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:173.5-173.60 prod{x : idx, y : idx} {{0xFB} {`%`_u32(9,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:165.5-165.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:174.5-174.61 prod{x : idx, y : idx} {{0xFB} {`%`_u32(10,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:166.5-166.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:175.5-175.43 prod{x : idx} {{0xFB} {`%`_u32(11,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:167.5-167.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:176.5-176.45 prod{x : idx} {{0xFB} {`%`_u32(12,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:168.5-168.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:177.5-177.45 prod{x : idx} {{0xFB} {`%`_u32(13,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:169.5-169.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:178.5-178.43 prod{x : idx} {{0xFB} {`%`_u32(14,):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:170.5-170.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:179.5-179.30 prod {{0xFB} {`%`_u32(15,):Bu32}} => `ARRAY.LEN`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:171.5-171.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:180.5-180.44 prod{x : idx} {{0xFB} {`%`_u32(16,):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:172.5-172.65 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:181.5-181.65 prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17,):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:173.5-173.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:182.5-182.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(18,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:174.5-174.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:183.5-183.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(19,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:178.5-178.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:187.5-187.39 prod {{0xFB} {`%`_u32(26,):Bu32}} => `ANY.CONVERT_EXTERN`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:179.5-179.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:188.5-188.39 prod {{0xFB} {`%`_u32(27,):Bu32}} => `EXTERN.CONVERT_ANY`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:183.5-183.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:192.5-192.28 prod {{0xFB} {`%`_u32(28,):Bu32}} => `REF.I31`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:184.5-184.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:193.5-193.30 prod {{0xFB} {`%`_u32(29,):Bu32}} => `I31.GET`_instr(S_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:185.5-185.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:194.5-194.30 prod {{0xFB} {`%`_u32(30,):Bu32}} => `I31.GET`_instr(U_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:192.5-192.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:201.5-201.31 prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:193.5-193.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:202.5-202.31 prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:194.5-194.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:203.5-203.31 prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:195.5-195.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:204.5-204.31 prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:199.5-199.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:208.5-208.27 prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:203.5-203.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:212.5-212.25 prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:204.5-204.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:213.5-213.25 prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:205.5-205.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:214.5-214.27 prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:206.5-206.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:215.5-215.27 prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:207.5-207.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:216.5-216.27 prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:208.5-208.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:217.5-217.27 prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:209.5-209.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:218.5-218.27 prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:210.5-210.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:219.5-219.27 prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:211.5-211.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:220.5-220.27 prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:212.5-212.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:221.5-221.27 prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:216.5-216.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:225.5-225.27 prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:220.5-220.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:229.5-229.25 prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:221.5-221.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:230.5-230.25 prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:222.5-222.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:231.5-231.27 prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:223.5-223.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:232.5-232.27 prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:224.5-224.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:233.5-233.27 prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:225.5-225.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:234.5-234.27 prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:226.5-226.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:235.5-235.27 prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:227.5-227.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:236.5-236.27 prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:228.5-228.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:237.5-237.27 prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:229.5-229.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:238.5-238.27 prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:233.5-233.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:242.5-242.25 prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:234.5-234.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:243.5-243.25 prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:235.5-235.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:244.5-244.25 prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:236.5-236.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:245.5-245.25 prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:237.5-237.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:246.5-246.25 prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:238.5-238.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:247.5-247.25 prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:242.5-242.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:251.5-251.25 prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:243.5-243.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:252.5-252.25 prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:244.5-244.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:253.5-253.25 prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:245.5-245.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:254.5-254.25 prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:246.5-246.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:255.5-255.25 prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:247.5-247.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:256.5-256.25 prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:251.5-251.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:260.5-260.25 prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:252.5-252.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:261.5-261.25 prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:253.5-253.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:262.5-262.28 prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:257.5-257.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:266.5-266.26 prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:258.5-258.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:267.5-267.26 prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:259.5-259.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:268.5-268.26 prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:260.5-260.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:269.5-269.28 prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:261.5-261.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:270.5-270.28 prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:262.5-262.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:271.5-271.28 prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:263.5-263.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:272.5-272.28 prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:264.5-264.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:273.5-273.26 prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:265.5-265.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:274.5-274.25 prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:266.5-266.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:275.5-275.26 prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:267.5-267.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:276.5-276.26 prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:268.5-268.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:277.5-277.28 prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:269.5-269.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:278.5-278.28 prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:270.5-270.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:279.5-279.27 prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:271.5-271.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:280.5-280.27 prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:275.5-275.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:284.5-284.25 prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:276.5-276.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:285.5-285.25 prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:277.5-277.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:286.5-286.28 prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:281.5-281.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:290.5-290.31 prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:282.5-282.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:291.5-291.32 prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:286.5-286.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:295.5-295.31 prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:287.5-287.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:296.5-296.32 prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:288.5-288.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:297.5-297.32 prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:292.5-292.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:301.5-301.26 prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:293.5-293.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:302.5-302.26 prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:294.5-294.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:303.5-303.26 prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:295.5-295.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:304.5-304.28 prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:296.5-296.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:305.5-305.28 prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:297.5-297.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:306.5-306.28 prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:298.5-298.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:307.5-307.28 prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:299.5-299.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:308.5-308.26 prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:300.5-300.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:309.5-309.25 prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:301.5-301.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:310.5-310.26 prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:302.5-302.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:311.5-311.26 prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:303.5-303.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:312.5-312.28 prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:304.5-304.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:313.5-313.28 prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:305.5-305.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:314.5-314.27 prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:306.5-306.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:315.5-315.27 prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:310.5-310.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:319.5-319.25 prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:311.5-311.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:320.5-320.25 prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:312.5-312.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:321.5-321.26 prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:313.5-313.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:322.5-322.27 prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:314.5-314.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:323.5-323.27 prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:315.5-315.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:324.5-324.29 prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:316.5-316.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:325.5-325.26 prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:320.5-320.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:329.5-329.26 prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:321.5-321.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:330.5-330.26 prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:322.5-322.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:331.5-331.26 prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:323.5-323.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:332.5-332.26 prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:324.5-324.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:333.5-333.26 prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:325.5-325.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:334.5-334.26 prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:326.5-326.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:335.5-335.31 prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:330.5-330.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:339.5-339.25 prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:331.5-331.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:340.5-340.25 prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:332.5-332.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:341.5-341.26 prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:333.5-333.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:342.5-342.27 prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:334.5-334.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:343.5-343.27 prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:335.5-335.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:344.5-344.29 prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:336.5-336.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:345.5-345.26 prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:340.5-340.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:349.5-349.26 prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:341.5-341.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:350.5-350.26 prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:342.5-342.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:351.5-351.26 prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:343.5-343.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:352.5-352.26 prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:344.5-344.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:353.5-353.26 prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:345.5-345.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:354.5-354.26 prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:346.5-346.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:355.5-355.31 prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:351.5-351.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:360.5-360.31 prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:352.5-352.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:361.5-361.34 prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:353.5-353.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:362.5-362.34 prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:354.5-354.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:363.5-363.34 prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:355.5-355.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:364.5-364.34 prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:356.5-356.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:365.5-365.35 prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:357.5-357.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:366.5-366.35 prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:358.5-358.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:367.5-367.34 prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:359.5-359.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:368.5-368.34 prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:360.5-360.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:369.5-369.34 prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:361.5-361.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:370.5-370.34 prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:362.5-362.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:371.5-371.36 prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:363.5-363.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:372.5-372.36 prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:364.5-364.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:373.5-373.36 prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:365.5-365.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:374.5-374.36 prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:366.5-366.33 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:375.5-375.33 prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:367.5-367.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:376.5-376.36 prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:368.5-368.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:377.5-377.36 prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:369.5-369.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:378.5-378.36 prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:370.5-370.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:379.5-379.36 prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:371.5-371.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:380.5-380.34 prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:372.5-372.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:381.5-381.38 prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:373.5-373.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:382.5-382.38 prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:374.5-374.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:383.5-383.38 prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:375.5-375.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:384.5-384.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:379.5-379.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:388.5-388.45 prod {{0xFC} {`%`_u32(0,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:380.5-380.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:389.5-389.45 prod {{0xFC} {`%`_u32(1,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:381.5-381.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:390.5-390.45 prod {{0xFC} {`%`_u32(2,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:382.5-382.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:391.5-391.45 prod {{0xFC} {`%`_u32(3,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:383.5-383.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:392.5-392.45 prod {{0xFC} {`%`_u32(4,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:384.5-384.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:393.5-393.45 prod {{0xFC} {`%`_u32(5,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:385.5-385.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:394.5-394.45 prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:386.5-386.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:395.5-395.45 prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:396.5-396.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:405.5-405.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:397.5-397.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:406.5-406.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:398.5-398.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:407.5-407.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:399.5-399.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:408.5-408.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:400.5-400.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:409.5-409.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:401.5-401.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:410.5-410.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:402.5-402.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:411.5-411.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:403.5-403.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:412.5-412.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:404.5-404.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:413.5-413.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:405.5-405.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:414.5-414.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:406.5-406.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:415.5-415.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:407.5-407.52 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:416.5-416.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:408.5-408.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:417.5-417.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:409.5-409.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:418.5-418.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:410.5-410.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:419.5-419.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:411.5-411.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:420.5-420.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:412.5-412.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:421.5-421.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:413.5-413.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:422.5-422.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:414.5-414.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:423.5-423.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:415.5-415.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:424.5-424.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:416.5-416.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:425.5-425.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:417.5-417.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:426.5-426.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:421.5-421.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:430.5-430.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:425.5-425.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:434.5-434.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:426.5-426.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:435.5-435.49 prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:427.5-427.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:436.5-436.58 prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:431.5-431.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:440.5-440.38 prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:432.5-432.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:441.5-441.38 prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:433.5-433.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:442.5-442.38 prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:434.5-434.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:443.5-443.38 prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:435.5-435.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:444.5-444.38 prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:436.5-436.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:445.5-445.38 prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:440.5-440.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:449.5-449.60 prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:441.5-441.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:450.5-450.60 prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:442.5-442.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:451.5-451.58 prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:443.5-443.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:452.5-452.60 prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:444.5-444.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:453.5-453.60 prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:445.5-445.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:454.5-454.58 prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:446.5-446.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:455.5-455.58 prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:447.5-447.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:456.5-456.58 prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:448.5-448.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:457.5-457.58 prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:458.5-458.58 prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:450.5-450.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:459.5-459.58 prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:451.5-451.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:460.5-460.58 prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:461.5-461.58 prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:462.5-462.58 prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:457.5-457.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:466.5-466.41 prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:458.5-458.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:467.5-467.41 prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:459.5-459.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:468.5-468.43 prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:460.5-460.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:469.5-469.43 prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:461.5-461.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:470.5-470.43 prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:462.5-462.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:471.5-471.43 prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:463.5-463.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:464.5-464.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:465.5-465.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:474.5-474.43 prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:475.5-475.43 prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:470.5-470.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:479.5-479.41 prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:471.5-471.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:480.5-480.41 prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:472.5-472.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:481.5-481.43 prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:482.5-482.43 prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:474.5-474.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:483.5-483.43 prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:475.5-475.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:484.5-484.43 prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:476.5-476.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:477.5-477.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:478.5-478.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:487.5-487.43 prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:488.5-488.43 prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:483.5-483.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:492.5-492.41 prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:484.5-484.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:493.5-493.41 prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:485.5-485.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:494.5-494.43 prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:495.5-495.43 prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:487.5-487.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:496.5-496.43 prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:488.5-488.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:497.5-497.43 prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:489.5-489.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:498.5-498.43 prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:490.5-490.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:499.5-499.43 prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:491.5-491.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:500.5-500.43 prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:501.5-501.43 prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:496.5-496.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:497.5-497.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:498.5-498.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:499.5-499.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:500.5-500.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:509.5-509.41 prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:501.5-501.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:510.5-510.41 prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:505.5-505.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:514.5-514.41 prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:515.5-515.41 prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:516.5-516.41 prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:517.5-517.41 prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:509.5-509.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:518.5-518.41 prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:510.5-510.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:519.5-519.41 prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:514.5-514.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:523.5-523.36 prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:518.5-518.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:527.5-527.37 prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:519.5-519.40 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:528.5-528.40 prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:520.5-520.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:529.5-529.36 prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:521.5-521.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:530.5-530.37 prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:525.5-525.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:534.5-534.44 prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:529.5-529.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:538.5-538.43 prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:533.5-533.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:542.5-542.41 prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:534.5-534.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:543.5-543.41 prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:535.5-535.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:544.5-544.44 prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:539.5-539.48 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:548.5-548.48 prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:543.5-543.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:552.5-552.41 prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:547.5-547.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:556.5-556.53 prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:548.5-548.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:557.5-557.53 prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:552.5-552.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:561.5-561.45 prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:553.5-553.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:562.5-562.47 prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:554.5-554.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:563.5-563.47 prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:558.5-558.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:567.5-567.43 prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:559.5-559.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:568.5-568.49 prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:560.5-560.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:569.5-569.49 prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:561.5-561.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:570.5-570.43 prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:562.5-562.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:571.5-571.49 prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:563.5-563.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:572.5-572.49 prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:564.5-564.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:573.5-573.45 prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:565.5-565.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:574.5-574.45 prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:566.5-566.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:575.5-575.45 prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:567.5-567.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:576.5-576.45 prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:568.5-568.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:577.5-577.46 prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:572.5-572.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:581.5-581.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-latest/5.3-binary.instructions.spectec:573.5-573.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:582.5-582.70 prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:577.5-577.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:586.5-586.42 prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:578.5-578.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:587.5-587.42 prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:582.5-582.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:591.5-591.53 prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:583.5-583.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:592.5-592.43 prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:584.5-584.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:593.5-593.49 prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:585.5-585.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:594.5-594.49 prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:586.5-586.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:595.5-595.43 prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:587.5-587.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:596.5-596.49 prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:588.5-588.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:597.5-597.49 prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:589.5-589.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:598.5-598.43 prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:590.5-590.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:599.5-599.45 prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:591.5-591.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:600.5-600.45 prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:592.5-592.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:601.5-601.45 prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:593.5-593.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:602.5-602.45 prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:594.5-594.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:603.5-603.46 prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:595.5-595.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:604.5-604.57 prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:599.5-599.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:608.5-608.49 prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:603.5-603.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:612.5-612.41 prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:607.5-607.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:616.5-616.53 prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:608.5-608.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:617.5-617.53 prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:612.5-612.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:621.5-621.63 prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:613.5-613.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:622.5-622.64 prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:614.5-614.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:623.5-623.63 prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:615.5-615.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:624.5-624.64 prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:619.5-619.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:628.5-628.45 prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:620.5-620.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:629.5-629.47 prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:621.5-621.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:630.5-630.47 prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:625.5-625.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:634.5-634.66 prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:626.5-626.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:635.5-635.67 prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:627.5-627.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:636.5-636.66 prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:628.5-628.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:637.5-637.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-latest/5.3-binary.instructions.spectec:629.5-629.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:638.5-638.67 prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:633.5-633.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:642.5-642.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-latest/5.3-binary.instructions.spectec:634.5-634.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:643.5-643.70 prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:638.5-638.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:647.5-647.42 prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:639.5-639.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:648.5-648.42 prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:643.5-643.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:652.5-652.49 prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:647.5-647.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:656.5-656.41 prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:651.5-651.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:660.5-660.63 prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:652.5-652.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:661.5-661.64 prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:653.5-653.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:662.5-662.63 prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:654.5-654.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:663.5-663.64 prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:658.5-658.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:667.5-667.45 prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:659.5-659.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:668.5-668.49 prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:660.5-660.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:669.5-669.49 prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:664.5-664.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:673.5-673.43 prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:665.5-665.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:674.5-674.43 prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:666.5-666.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:675.5-675.43 prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:667.5-667.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:676.5-676.45 prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:668.5-668.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:677.5-677.45 prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:669.5-669.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:678.5-678.45 prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:670.5-670.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:679.5-679.45 prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:674.5-674.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:683.5-683.59 prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:675.5-675.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:684.5-684.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-latest/5.3-binary.instructions.spectec:676.5-676.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:685.5-685.67 prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:677.5-677.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:686.5-686.66 prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:678.5-678.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:687.5-687.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-latest/5.3-binary.instructions.spectec:682.5-682.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:691.5-691.72 prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOT_ADDS_vextternop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:686.5-686.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:695.5-695.42 prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:687.5-687.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:696.5-696.42 prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:691.5-691.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:700.5-700.49 prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:695.5-695.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:704.5-704.41 prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:699.5-699.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:708.5-708.63 prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:700.5-700.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:709.5-709.64 prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:701.5-701.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:710.5-710.63 prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:702.5-702.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:711.5-711.64 prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:706.5-706.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:715.5-715.45 prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:707.5-707.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:716.5-716.49 prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:708.5-708.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:717.5-717.49 prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:712.5-712.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:721.5-721.43 prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:713.5-713.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:722.5-722.43 prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:714.5-714.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:723.5-723.43 prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:718.5-718.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:727.5-727.42 prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:719.5-719.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:728.5-728.42 prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:720.5-720.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:729.5-729.46 prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:721.5-721.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:730.5-730.46 prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:722.5-722.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:731.5-731.46 prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:723.5-723.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:732.5-732.46 prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:727.5-727.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:736.5-736.66 prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:728.5-728.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:737.5-737.67 prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:729.5-729.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:738.5-738.66 prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:730.5-730.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:739.5-739.67 prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:734.5-734.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:743.5-743.43 prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:735.5-735.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:744.5-744.44 prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:736.5-736.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:745.5-745.44 prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:737.5-737.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:746.5-746.46 prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:738.5-738.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:747.5-747.42 prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:739.5-739.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:748.5-748.42 prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:740.5-740.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:749.5-749.43 prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:744.5-744.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:753.5-753.43 prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:745.5-745.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:754.5-754.43 prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:746.5-746.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:755.5-755.43 prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:756.5-756.43 prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:748.5-748.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:757.5-757.43 prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:749.5-749.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:758.5-758.43 prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:750.5-750.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:759.5-759.44 prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:751.5-751.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:760.5-760.44 prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:752.5-752.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:761.5-761.51 prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:753.5-753.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:762.5-762.51 prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:757.5-757.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:766.5-766.53 prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:758.5-758.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:767.5-767.54 prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:762.5-762.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:771.5-771.43 prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:763.5-763.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:772.5-772.44 prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:764.5-764.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:773.5-773.44 prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:765.5-765.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:774.5-774.46 prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:766.5-766.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:775.5-775.42 prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:767.5-767.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:776.5-776.42 prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:768.5-768.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:777.5-777.43 prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:772.5-772.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:781.5-781.43 prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:773.5-773.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:782.5-782.43 prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:774.5-774.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:783.5-783.43 prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:784.5-784.43 prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:776.5-776.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:785.5-785.43 prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:777.5-777.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:786.5-786.43 prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:778.5-778.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:787.5-787.44 prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:779.5-779.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:788.5-788.44 prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:780.5-780.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:789.5-789.51 prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:781.5-781.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:790.5-790.51 prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:785.5-785.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:794.5-794.53 prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:786.5-786.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:795.5-795.54 prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:787.5-787.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:796.5-796.59 prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:788.5-788.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:797.5-797.59 prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:789.5-789.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:798.5-798.59 prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:790.5-790.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:799.5-799.59 prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:794.5-794.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:803.5-803.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-latest/5.3-binary.instructions.spectec:795.5-795.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:804.5-804.61 prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:796.5-796.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:805.5-805.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-latest/5.3-binary.instructions.spectec:797.5-797.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:806.5-806.62 prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:798.5-798.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:807.5-807.60 prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:799.5-799.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:808.5-808.60 prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:800.5-800.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:809.5-809.67 prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:801.5-801.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:810.5-810.67 prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:802.5-802.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:811.5-811.64 prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:803.5-803.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:812.5-812.64 prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:804.5-804.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:813.5-813.66 prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:805.5-805.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:814.5-814.66 prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:806.5-806.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:815.5-815.71 prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:807.5-807.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:816.5-816.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))) } @@ -22325,7 +22980,9 @@ grammar Theaptype_(I : I) : heaptype ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ht : heaptype} ht:Tabsheaptype => ht ;; ../../../../specification/wasm-latest/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) + prod{x : idx} {{"("} {"exact"} {x:Ttypeidx_(I)} {")"}} => _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))) + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(I) => _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x))) ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tnull : null @@ -22391,6 +23048,21 @@ grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../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 [[?(`%`_name([],))]], TYPEDEFS []}) +;; ../../../../specification/wasm-latest/6.2-text.types.spectec +grammar Tdescribes_(I : I) : describes + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx} {{"("} {"describes"} {x:Ttypeidx_(I)} {")"}} => DESCRIBES_describes(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/6.2-text.types.spectec +grammar Tdescriptor_(I : I) : descriptor + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx} {{"("} {"descriptor"} {x:Ttypeidx_(I)} {")"}} => DESCRIPTOR_descriptor(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/6.2-text.types.spectec +grammar Tdesctype_(I : I) : (desctype, idctxt) + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype, I' : I} {{dcs?{dcs <- `dcs?`}:Tdescribes_(I)?{}} {dcr?{dcr <- `dcr?`}:Tdescriptor_(I)?{}} {(ct, I'):Tcomptype_(I)}} => (`%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct), I') + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfinal : final ;; ../../../../specification/wasm-latest/6.2-text.types.spectec @@ -22399,7 +23071,7 @@ grammar Tfinal : final ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tsubtype_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-latest/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*, dct : desctype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(dct, I'):Tdesctype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, dct), I') ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttypedef_(I : I) : (subtype, idctxt) @@ -22430,12 +23102,12 @@ grammar Ttypeuse_(I : I) : (typeidx, idctxt) ;; ../../../../specification/wasm-latest/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 (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `%%%`_desctype(?(), ?(), `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-latest/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 (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `%%%`_desctype(?(), ?(), `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',) @@ -22472,7 +23144,9 @@ grammar Texterntype_(I : I) : (externtype, idctxt) ;; ../../../../specification/wasm-latest/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 []}) ;; ../../../../specification/wasm-latest/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(`%%`_exacttypeuse(?(), _IDX_typeuse(x))), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {"("} {"exact"} {(x, I'):Ttypeuse_(I)} {")"} {")"}} => (FUNC_externtype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tlabel_(I : I) : (name?, I) @@ -22557,6 +23231,10 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_desc_eq"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_DESC_EQ_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_desc_eq_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) @@ -22719,6 +23397,10 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{x : idx} {{"ref.get_desc"} {x:Ttypeidx_(I)}} => `REF.GET_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast_desc_eq"} {rt:Treftype_(I)}} => `REF.CAST_DESC_EQ`_instr(rt) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.i31" => `REF.I31`_instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i31.get_s" => `I31.GET`_instr(S_sx) @@ -22729,6 +23411,10 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_desc"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default_desc"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/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-latest/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) @@ -23713,6 +24399,8 @@ grammar Texportfuncdots_(I : I) : () 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 + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {"("} {"exact"} {Ttypeuse_(I)} {")"}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttag_(I : I) : () @@ -24373,6 +25061,10 @@ def $free_externidx(externidx : externidx) : free syntax null = | NULL +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec +syntax exact = + | EXACT + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax addrtype = | I32 @@ -24424,13 +25116,17 @@ syntax final = ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:37.1-38.43 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:41.1-42.43 syntax typeuse = | _IDX(typeidx) | _DEF(rectype : rectype, n : n) | REC(n) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:43.1-44.26 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:44.1-44.65 +syntax exacttypeuse = + | `%%`(`exact?` : exact?, typeuse : typeuse) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:49.1-50.48 syntax heaptype = | ANY | EQ @@ -24445,11 +25141,9 @@ syntax heaptype = | EXTERN | NOEXTERN | BOT - | _IDX(typeidx) - | _DEF(rectype : rectype, n : n) - | REC(n) + | _HT(exacttypeuse) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:51.1-52.14 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:57.1-58.14 syntax valtype = | I32 | I64 @@ -24459,7 +25153,7 @@ syntax valtype = | REF(`null?` : null?, heaptype : heaptype) | BOT -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:92.1-92.66 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:98.1-98.66 syntax storagetype = | I32 | I64 @@ -24471,24 +25165,36 @@ syntax storagetype = | I8 | I16 -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:102.1-103.16 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:108.1-109.16 syntax resulttype = list(syntax valtype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:112.1-112.61 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:118.1-118.61 syntax fieldtype = | `%%`(`mut?` : mut?, storagetype : storagetype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:114.1-117.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:120.1-123.34 syntax comptype = | STRUCT(list(syntax fieldtype)) | ARRAY(fieldtype) | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:119.1-120.33 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:125.1-125.88 +syntax describes = + | DESCRIBES(typeuse) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:126.1-126.91 +syntax descriptor = + | DESCRIPTOR(typeuse) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:128.1-129.36 +syntax desctype = + | `%%%`(`describes?` : describes?, `descriptor?` : descriptor?, comptype : comptype) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:131.1-132.33 syntax subtype = - | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) + | SUB(`final?` : final?, `typeuse*` : typeuse*, desctype : desctype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:122.1-123.22 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:134.1-135.22 syntax rectype = | REC(list(syntax subtype)) } @@ -24497,6 +25203,10 @@ syntax rectype = syntax deftype = | _DEF(rectype : rectype, n : n) +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec +syntax exactdeftype = + | `%%`(`exact?` : exact?, deftype : deftype) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax typevar = | _IDX(typeidx) @@ -24653,7 +25363,7 @@ syntax externtype = | GLOBAL(globaltype) | MEM(memtype) | TABLE(tabletype) - | FUNC(typeuse) + | FUNC(exacttypeuse) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax moduletype = @@ -24877,13 +25587,13 @@ def $as_deftype(typeuse : typeuse) : deftype ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:324.1-324.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:330.1-330.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:331.1-331.44 def $tagsxt{jt : tagtype, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:332.1-332.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -24891,13 +25601,13 @@ def $tagsxt(externtype*) : tagtype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:325.1-325.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:334.1-334.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:335.1-335.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:336.1-336.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -24905,13 +25615,13 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:326.1-326.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:338.1-338.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:339.1-339.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:340.1-340.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -24919,13 +25629,13 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:327.1-327.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:342.1-342.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:343.1-343.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:344.1-344.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) -- otherwise } @@ -24933,13 +25643,13 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:312.1-312.88 -def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:330.1-330.24 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:328.1-328.88 +def $funcsxt(externtype*) : exactdeftype* + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:346.1-346.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype(dt : deftype <: typeuse)] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:347.1-347.49 + def $funcsxt{edt : exactdeftype, `xt*` : externtype*}([FUNC_externtype(edt : exactdeftype <: exacttypeuse)] ++ xt*{xt <- `xt*`}) = [edt] ++ $funcsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:348.1-348.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -24947,14 +25657,14 @@ def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:353.1-353.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:384.1-384.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:385.1-385.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = tu_1 -- if (tv = tv_1) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:367.1-367.92 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:386.1-386.92 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) -- otherwise } @@ -24962,13 +25672,13 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:425.1-425.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:426.1-426.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:427.1-427.63 def $minus_recs{n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:428.1-429.45 def $minus_recs{x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) } @@ -24991,74 +25701,87 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:354.1-354.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:388.1-388.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:389.1-389.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:359.1-359.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:395.1-395.89 + def $subst_heaptype{`exact?` : exact?, tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(_HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, tu')), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:396.1-396.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -- otherwise -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:360.1-360.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:398.1-398.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:361.1-361.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:400.1-400.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:401.1-401.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:402.1-402.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-latest/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:403.1-403.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:364.1-364.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:407.1-407.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:408.1-408.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:365.1-365.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:410.1-410.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:366.1-366.112 +def $subst_describes(describes : describes, typevar*, typeuse*) : describes + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:416.1-416.88 + def $subst_describes{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(DESCRIBES_describes(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = DESCRIBES_describes($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:367.1-367.112 +def $subst_descriptor(descriptor : descriptor, typevar*, typeuse*) : descriptor + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:417.1-417.91 + def $subst_descriptor{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(DESCRIPTOR_descriptor(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = DESCRIPTOR_descriptor($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:369.1-369.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:412.1-412.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`},)) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:413.1-413.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:414.1-414.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-latest/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:370.1-370.112 +def $subst_desctype(desctype : desctype, typevar*, typeuse*) : desctype + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:419.1-420.99 + def $subst_desctype{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_desctype($subst_describes(dcs, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})?{dcs <- `dcs?`}, $subst_descriptor(dcr, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})?{dcr <- `dcr?`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:371.1-371.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-latest/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*`})) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:422.1-423.75 + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, dct : desctype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, dct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_desctype(dct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:372.1-372.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:431.1-432.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`},)) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:373.1-373.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:437.1-437.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) } @@ -25098,7 +25821,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{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*`})) + def $subst_externtype{`exact?` : exact?, tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, tu')), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, $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 @@ -25153,11 +25876,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:475.1-475.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:476.1-476.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:477.1-477.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -25234,75 +25957,90 @@ def $free_typevar(typevar : typevar) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:481.1-481.36 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:505.1-505.36 def $free_heaptype(heaptype : heaptype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:529.1-529.65 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:556.1-556.65 def $free_heaptype{absheaptype : absheaptype}((absheaptype : absheaptype <: heaptype)) = $free_absheaptype(absheaptype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:530.1-530.53 - def $free_heaptype{typeuse : typeuse}((typeuse : typeuse <: heaptype)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:557.1-557.64 + def $free_heaptype{typeuse : typeuse}(_HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, typeuse))) = $free_typeuse(typeuse) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:482.1-482.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:506.1-506.34 def $free_reftype(reftype : reftype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:532.1-532.65 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:559.1-559.65 def $free_reftype{`null?` : null?, heaptype : heaptype}(REF_reftype(null?{null <- `null?`}, heaptype)) = $free_heaptype(heaptype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:484.1-484.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:508.1-508.34 def $free_typeuse(typeuse : typeuse) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:526.1-526.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:553.1-553.52 def $free_typeuse{typevar : typevar}((typevar : typevar <: typeuse)) = $free_typevar(typevar) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:527.1-527.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:554.1-554.52 def $free_typeuse{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:485.1-485.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:509.1-509.34 def $free_valtype(valtype : valtype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:534.1-534.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:561.1-561.52 def $free_valtype{numtype : numtype}((numtype : numtype <: valtype)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:535.1-535.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:562.1-562.52 def $free_valtype{vectype : vectype}((vectype : vectype <: valtype)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:536.1-536.52 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:563.1-563.52 def $free_valtype{reftype : reftype}((reftype : reftype <: valtype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:537.1-537.28 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:564.1-564.28 def $free_valtype(BOT_valtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:487.1-487.40 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:511.1-511.40 def $free_resulttype(resulttype : resulttype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:539.1-539.69 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:566.1-566.69 def $free_resulttype{`valtype*` : valtype*}(`%`_resulttype(valtype*{valtype <- `valtype*`},)) = $free_list($free_valtype(valtype)*{valtype <- `valtype*`}) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:488.1-488.42 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:512.1-512.42 def $free_storagetype(storagetype : storagetype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:541.1-541.56 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:568.1-568.56 def $free_storagetype{valtype : valtype}((valtype : valtype <: storagetype)) = $free_valtype(valtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:542.1-542.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:569.1-569.59 def $free_storagetype{packtype : packtype}((packtype : packtype <: storagetype)) = $free_packtype(packtype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:489.1-489.38 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:513.1-513.38 def $free_fieldtype(fieldtype : fieldtype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:544.1-544.71 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:571.1-571.71 def $free_fieldtype{`mut?` : mut?, storagetype : storagetype}(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) = $free_storagetype(storagetype) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:490.1-490.36 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:514.1-514.36 def $free_comptype(comptype : comptype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:546.1-546.80 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:573.1-573.80 def $free_comptype{`fieldtype*` : fieldtype*}(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) = $free_list($free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`}) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:547.1-547.65 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:574.1-574.65 def $free_comptype{fieldtype : fieldtype}(ARRAY_comptype(fieldtype)) = $free_fieldtype(fieldtype) - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:548.1-548.121 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:575.1-575.121 def $free_comptype{resulttype_1 : resulttype, resulttype_2 : resulttype}(`FUNC%->%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:491.1-491.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:515.1-515.38 +def $free_describes(describes : describes) : free + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:577.1-577.54 + def $free_describes{tu : typeuse}(DESCRIBES_describes(tu)) = $free_typeuse(tu) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:516.1-516.40 +def $free_descriptor(descriptor : descriptor) : free + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:578.1-578.56 + def $free_descriptor{tu : typeuse}(DESCRIPTOR_descriptor(tu)) = $free_typeuse(tu) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:517.1-517.36 +def $free_desctype(desctype : desctype) : free + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:580.1-581.94 + def $free_desctype{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype}(`%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct)) = $free_opt($free_describes(dcs)?{dcs <- `dcs?`}) +++ $free_opt($free_descriptor(dcr)?{dcr <- `dcr?`}) +++ $free_comptype(ct) + +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:518.1-518.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:550.1-551.66 - def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:583.1-584.61 + def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, dct : desctype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, dct)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_desctype(dct) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:492.1-492.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:519.1-519.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:553.1-553.70 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:586.1-586.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:520.1-520.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:547.1-547.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:521.1-521.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:548.1-548.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -25347,7 +26085,7 @@ def $free_externtype(externtype : externtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + def $free_externtype{`exact?` : exact?, typeuse : typeuse}(FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, typeuse))) = $free_typeuse(typeuse) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_moduletype(moduletype : moduletype) : free @@ -25901,6 +26639,8 @@ syntax instr = | BR_ON_NON_NULL(labelidx) | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_DESC_EQ(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_DESC_EQ_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) | CALL(funcidx) | CALL_REF(typeuse) | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) @@ -25940,13 +26680,17 @@ syntax instr = | `REF.IS_NULL` | `REF.AS_NON_NULL` | `REF.EQ` + | `REF.GET_DESC`(typeidx) | `REF.TEST`(reftype) | `REF.CAST`(reftype) + | `REF.CAST_DESC_EQ`(reftype) | `REF.FUNC`(funcidx) | `REF.I31` | `I31.GET`(sx) | `STRUCT.NEW`(typeidx) | `STRUCT.NEW_DEFAULT`(typeidx) + | `STRUCT.NEW_DESC`(typeidx) + | `STRUCT.NEW_DEFAULT_DESC`(typeidx) | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) | `ARRAY.NEW`(typeidx) @@ -26049,233 +26793,245 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-585.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:599.1-599.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:586.1-586.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:600.1-600.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-587.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:601.1-601.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:588.1-588.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:602.1-602.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:421.1-421.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:427.1-427.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.26 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-442.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-437.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:443.1-443.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:438.1-438.27 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:444.1-444.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:439.1-439.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.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:441.1-441.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-447.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:442.1-442.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:448.1-448.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:443.1-444.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:449.1-450.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:446.1-446.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-447.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-453.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:448.1-449.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:454.1-455.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:450.1-450.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-451.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-453.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.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:454.1-455.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-461.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:457.1-457.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-463.83 + def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_DESC_EQ_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:464.1-465.83 + def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_DESC_EQ_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:467.1-467.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-458.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-468.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:459.1-460.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:469.1-470.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:461.1-461.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-465.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-475.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:467.1-467.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.53 def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-468.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.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:469.1-470.99 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-480.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:472.1-472.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-483.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:484.1-484.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:485.1-485.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:486.1-486.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-478.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:487.1-488.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:480.1-480.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:490.1-490.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:491.1-491.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-483.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-493.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:484.1-484.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:494.1-494.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:485.1-485.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:486.1-486.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:496.1-496.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:487.1-487.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:488.1-488.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:489.1-489.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:490.1-490.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.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:491.1-491.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.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:493.1-493.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.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:494.1-495.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-505.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:496.1-497.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-507.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:498.1-499.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-509.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:500.1-501.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-511.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:502.1-503.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:512.1-513.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:504.1-504.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:505.1-505.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.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:506.1-506.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-516.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.62 def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.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:510.1-510.38 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.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:511.1-511.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.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:512.1-512.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.63 + def $free_instr{typeidx : typeidx}(`REF.GET_DESC`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.67 + def $free_instr{reftype : reftype}(`REF.CAST_DESC_EQ`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:526.1-526.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.30 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:527.1-527.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:517.1-517.33 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:529.1-529.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:519.1-519.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.61 def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.66 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DESC`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.74 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT_DESC`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.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:522.1-522.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-538.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:526.1-526.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:540.1-540.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:527.1-528.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-542.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:529.1-530.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-544.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:531.1-531.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.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:532.1-532.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-546.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:547.1-547.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:534.1-534.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-548.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-536.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-550.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:537.1-538.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:551.1-552.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:539.1-540.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-554.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:542.1-542.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-556.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:543.1-543.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:557.1-557.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:545.1-545.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:559.1-559.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-546.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:560.1-560.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:547.1-547.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:561.1-561.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-549.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-563.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:550.1-550.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-552.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-553.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-567.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:554.1-554.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:568.1-568.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:555.1-555.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-569.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-556.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:570.1-570.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:557.1-558.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-572.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:559.1-560.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:573.1-574.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:561.1-561.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-564.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.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:565.1-566.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.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:567.1-568.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:581.1-582.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:569.1-570.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:583.1-584.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:571.1-572.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-586.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:573.1-574.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-588.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:575.1-575.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:589.1-589.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:590.1-590.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-577.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:591.1-591.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:578.1-579.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:592.1-593.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:580.1-581.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:594.1-595.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:582.1-582.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:596.1-596.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:422.1-422.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:428.1-428.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:590.1-591.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:604.1-605.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*`})) } @@ -26460,7 +27216,7 @@ syntax context = GLOBALS globaltype*, MEMS memtype*, TABLES tabletype*, - FUNCS deftype*, + FUNCS exactdeftype*, DATAS datatype*, ELEMS elemtype*, LOCALS localtype*, @@ -26560,9 +27316,9 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*, `dcs?` : describes?, `dcr?` : descriptor?}: `%~~%`(deftype, comptype) - -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, comptype))) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -26581,11 +27337,11 @@ def $before(typeuse : typeuse, nat : nat) : bool ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec - def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + def $unrollht_{C : context, deftype : deftype}(C, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, (deftype : deftype <: typeuse)))) = $unrolldt(deftype) ;; ../../../../specification/wasm-latest/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, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, _IDX_typeuse(typeidx)))) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) ;; ../../../../specification/wasm-latest/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, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, REC_typeuse(i)))) = C.RECS_context[i] ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { @@ -26598,7 +27354,7 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: - `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + `%|-%:OK`(C, _HT_heaptype(`%%`_exacttypeuse(EXACT_exact?{}, typeuse))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:27.1-28.16 @@ -26635,19 +27391,19 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:106.1-108.30 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:113.1-115.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (typeidx!`%`_typeidx.0 < |C.TYPES_context|) -- if (C.TYPES_context[typeidx!`%`_typeidx.0] = dt) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:110.1-112.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:117.1-119.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:114.1-116.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:121.1-123.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) @@ -26659,110 +27415,144 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:92.1-92.104 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:97.1-97.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:130.1-132.43 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:137.1-139.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:93.1-93.106 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:98.1-98.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:122.1-124.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:129.1-131.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:126.1-128.37 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:133.1-135.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:94.1-94.103 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:99.1-99.103 relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:135.1-137.42 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:142.1-144.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:139.1-141.39 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:146.1-148.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:143.1-146.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:150.1-153.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:97.1-97.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:100.1-100.103 +relation Desctype_ok: `%|-%:OK`(context, desctype) + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:156.1-164.31 + rule _{C : context, `tu_1?` : typeuse?, `tu_2?` : typeuse?, ct : comptype, `ft*` : fieldtype*}: + `%|-%:OK`(C, `%%%`_desctype(DESCRIBES_describes(tu_1)?{tu_1 <- `tu_1?`}, DESCRIPTOR_descriptor(tu_2)?{tu_2 <- `tu_2?`}, ct)) + -- (Typeuse_ok: `%|-%:OK`(C, tu_1))?{tu_1 <- `tu_1?`} + -- if ((tu_1?{tu_1 <- `tu_1?`} = ?()) \/ (ct = STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)))) + -- (Typeuse_ok: `%|-%:OK`(C, tu_2))?{tu_2 <- `tu_2?`} + -- if ((tu_2?{tu_2 <- `tu_2?`} = ?()) \/ (ct = STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)))) + -- Comptype_ok: `%|-%:OK`(C, ct) + +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:103.1-103.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:167.1-176.49 - rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) - -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) - -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} - -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) - -- if (|`comptype'*`| = |`typeuse'**`|) - -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:98.1-98.126 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:193.1-209.39 + rule _{C : context, `final?` : final?, `tu*` : typeuse*, dct : desctype, i : nat, `dct'*` : desctype*, `tu'**` : typeuse**, `i_1?` : n?, `i_2?` : n?, ct : comptype, `ct_1?` : comptype?, `dcs_1??` : describes??, `tu_1*?` : typeuse*?, `ct_2?` : comptype?, `dcr_2??` : descriptor??, `tu_2*?` : typeuse*?}: + `%|-%:%`(C, SUB_subtype(final?{final <- `final?`}, tu*{tu <- `tu*`}, dct), OK_oktypenat(i)) + -- if (|tu*{tu <- `tu*`}| <= 1) + -- (Typeuse_ok: `%|-%:OK`(C, tu))*{tu <- `tu*`} + -- (if $before(tu, i))*{tu <- `tu*`} + -- if (|`dct'*`| = |`tu*`|) + -- if (|`dct'*`| = |`tu'**`|) + -- (if ($unrollht_(C, _HT_heaptype(`%%`_exacttypeuse(?(), tu))) = SUB_subtype(?(), tu'*{tu' <- `tu'*`}, dct')))*{dct' <- `dct'*`, tu <- `tu*`, `tu'*` <- `tu'**`} + -- if (dct = `%%%`_desctype(DESCRIBES_describes(REC_typeuse(i_1))?{i_1 <- `i_1?`}, DESCRIPTOR_descriptor(REC_typeuse(i_2))?{i_2 <- `i_2?`}, ct)) + -- (if (i_1 < i))?{i_1 <- `i_1?`} + -- if ((`ct_1?` = ?()) <=> (`dcs_1??` = ?())) + -- if ((`ct_1?` = ?()) <=> (`i_1?` = ?())) + -- if ((`ct_1?` = ?()) <=> (`tu_1*?` = ?())) + -- (if (i_1 < |C.RECS_context|))?{i_1 <- `i_1?`} + -- (if (C.RECS_context[i_1] = SUB_subtype(final?{final <- `final?`}, tu_1*{tu_1 <- `tu_1*`}, `%%%`_desctype(dcs_1?{dcs_1 <- `dcs_1?`}, ?(DESCRIPTOR_descriptor(REC_typeuse(i))), ct_1))))?{ct_1 <- `ct_1?`, `dcs_1?` <- `dcs_1??`, i_1 <- `i_1?`, `tu_1*` <- `tu_1*?`} + -- if ((`ct_2?` = ?()) <=> (`dcr_2??` = ?())) + -- if ((`ct_2?` = ?()) <=> (`i_2?` = ?())) + -- if ((`ct_2?` = ?()) <=> (`tu_2*?` = ?())) + -- (if (i_2 < |C.RECS_context|))?{i_2 <- `i_2?`} + -- (if (C.RECS_context[i_2] = SUB_subtype(final?{final <- `final?`}, tu_2*{tu_2 <- `tu_2*`}, `%%%`_desctype(?(DESCRIBES_describes(REC_typeuse(i))), dcr_2?{dcr_2 <- `dcr_2?`}, ct_2))))?{ct_2 <- `ct_2?`, `dcr_2?` <- `dcr_2??`, i_2 <- `i_2?`, `tu_2*` <- `tu_2*?`} + -- Desctype_ok: `%|-%:OK`(C, dct) + -- (Desctype_sub: `%|-%<:%`(C, dct, dct'))*{dct' <- `dct'*`} + +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:104.1-104.126 relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:188.1-189.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:221.1-222.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypenat(i)) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:191.1-194.49 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:224.1-227.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`},)), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},)), OK_oktypenat(i + 1)) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:99.1-99.102 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:105.1-105.102 relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:197.1-201.14 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:230.1-234.14 rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`},))) -- if (i < n) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:102.1-102.108 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:108.1-108.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:181.1-183.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:186.1-188.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:185.1-187.38 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:190.1-192.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:189.1-192.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:194.1-197.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:103.1-103.107 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:109.1-109.108 +relation Desctype_sub: `%|-%<:%`(context, desctype, desctype) + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:199.1-203.37 + rule _{C : context, `tu_11?` : typeuse?, `tu_12?` : typeuse?, ct_1 : comptype, `tu_21?` : typeuse?, `tu_22?` : typeuse?, ct_2 : comptype}: + `%|-%<:%`(C, `%%%`_desctype(DESCRIBES_describes(tu_11)?{tu_11 <- `tu_11?`}, DESCRIPTOR_descriptor(tu_12)?{tu_12 <- `tu_12?`}, ct_1), `%%%`_desctype(DESCRIBES_describes(tu_21)?{tu_21 <- `tu_21?`}, DESCRIPTOR_descriptor(tu_22)?{tu_22 <- `tu_22?`}, ct_2)) + -- if ((`tu_11?` = ?()) <=> (`tu_21?` = ?())) + -- (Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), tu_11)), _HT_heaptype(`%%`_exacttypeuse(?(), tu_21))))?{tu_11 <- `tu_11?`, tu_21 <- `tu_21?`} + -- if ((`tu_12?` = ?()) <=> (`tu_22?` = ?())) + -- (Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), tu_12)), _HT_heaptype(`%%`_exacttypeuse(?(), tu_22))))?{tu_12 <- `tu_12?`, tu_22 <- `tu_22?`} + -- Comptype_sub: `%|-%<:%`(C, ct_1, ct_2) + +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:110.1-110.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:195.1-197.66 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:206.1-208.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:199.1-202.49 - rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:210.1-213.57 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, desctype : desctype, 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*`}, desctype)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) - -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), typeuse*{typeuse <- `typeuse*`}[i])), _HT_heaptype(`%%`_exacttypeuse(?(), (deftype_2 : deftype <: typeuse)))) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:9.1-9.104 relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) @@ -26770,175 +27560,180 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:23.1-27.48 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:23.1-25.48 + rule `exact-l`{C : context, typeuse : typeuse, heaptype : heaptype}: + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), typeuse)), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), typeuse)), heaptype) + + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:27.1-31.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:29.1-30.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:33.1-34.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:32.1-33.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:36.1-37.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:35.1-36.20 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:39.1-40.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:38.1-39.19 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:42.1-43.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:41.1-43.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:45.1-47.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype : deftype <: typeuse))), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:45.1-47.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:49.1-51.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype : deftype <: typeuse))), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:49.1-51.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:53.1-55.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype : deftype <: typeuse))), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:53.1-55.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:57.1-59.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (deftype_1 : deftype <: typeuse))), _HT_heaptype(`%%`_exacttypeuse(?(), (deftype_2 : deftype <: typeuse)))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:57.1-59.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:61.1-63.57 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: - `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(typeidx))), heaptype) -- if (typeidx!`%`_typeidx.0 < |C.TYPES_context|) - -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: typeuse))), heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:61.1-63.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:65.1-67.57 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: - `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + `%|-%<:%`(C, heaptype, _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(typeidx)))) -- if (typeidx!`%`_typeidx.0 < |C.TYPES_context|) - -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, _HT_heaptype(`%%`_exacttypeuse(?(), (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: typeuse)))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:65.1-67.51 - rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: - `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-71.63 + rule `rec-struct`{C : context, i : n, `final?` : final?, `dcs?` : describes?, `dcr?` : descriptor?, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), STRUCT_heaptype) -- if (i < |C.RECS_context|) - -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},)))) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-71.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.49 rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: - `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), ARRAY_heaptype) -- if (i < |C.RECS_context|) - -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `%%%`_desctype(?(), ?(), ARRAY_comptype(fieldtype)))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.51 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:77.1-79.51 rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), FUNC_heaptype) -- if (i < |C.RECS_context|) - -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)))) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `%%%`_desctype(?(), ?(), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))))) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:77.1-79.43 - rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: - `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-83.49 + rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, desctype : desctype}: + `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(?(), REC_typeuse(i))), _HT_heaptype(`%%`_exacttypeuse(?(), typeuse*{typeuse <- `typeuse*`}[j]))) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- if (i < |C.RECS_context|) - -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, desctype)) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-84.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:85.1-88.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:86.1-89.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:90.1-93.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:91.1-94.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:95.1-98.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:96.1-99.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:100.1-103.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:101.1-102.23 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:105.1-106.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:105.1-107.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:109.1-111.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:109.1-111.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:113.1-115.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:114.1-116.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:118.1-120.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:118.1-120.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:122.1-124.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:122.1-124.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:126.1-128.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:126.1-127.22 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:130.1-131.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:132.1-132.115 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:136.1-136.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:135.1-137.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:139.1-141.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:150.1-150.119 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:154.1-154.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:162.1-164.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:167.1-169.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:166.1-168.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:171.1-173.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:151.1-151.117 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:155.1-155.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:171.1-173.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:176.1-178.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:175.1-178.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:180.1-183.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) @@ -26976,6 +27771,13 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) -- if (typeidx!`%`_typeidx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec +relation Expand_desc: `%~%`(deftype, desctype) + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec + rule _{deftype : deftype, desctype : desctype, `final?` : final?, `typeuse*` : typeuse*}: + `%~%`(deftype, desctype) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, desctype)) + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec syntax oktypeidx = | OK(typeidx) @@ -26983,27 +27785,40 @@ syntax oktypeidx = ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + rule _{C : context, `final?` : final?, `x*` : idx*, dct : desctype, x_0 : idx, `dct'*` : desctype*, `yy**` : typeuse**, `x_1?` : idx?, `x_2?` : idx?, ct : comptype, `ct_1?` : comptype?, `dcs_1??` : describes??, `yy_1*?` : typeuse*?, `ct_2?` : comptype?, `dcr_2??` : descriptor??, `yy_2*?` : typeuse*?}: + `%|-%:%`(C, SUB_subtype(final?{final <- `final?`}, _IDX_typeuse(x)*{x <- `x*`}, dct), OK_oktypeidx(x_0)) -- if (|x*{x <- `x*`}| <= 1) -- (if (x!`%`_idx.0 < x_0!`%`_idx.0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- if (|`comptype'*`| = |`yy**`|) + -- if (|`dct'*`| = |`x*`|) + -- if (|`dct'*`| = |`yy**`|) -- (if (x!`%`_idx.0 < |C.TYPES_context|))*{x <- `x*`} - -- (if ($unrolldt(C.TYPES_context[x!`%`_idx.0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- (if ($unrolldt(C.TYPES_context[x!`%`_idx.0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, dct')))*{dct' <- `dct'*`, x <- `x*`, `yy*` <- `yy**`} + -- if (dct = `%%%`_desctype(DESCRIBES_describes(_IDX_typeuse(x_1))?{x_1 <- `x_1?`}, DESCRIPTOR_descriptor(_IDX_typeuse(x_2))?{x_2 <- `x_2?`}, ct)) + -- (if (x_1!`%`_idx.0 < x_0!`%`_idx.0))?{x_1 <- `x_1?`} + -- if ((`ct_1?` = ?()) <=> (`dcs_1??` = ?())) + -- if ((`ct_1?` = ?()) <=> (`x_1?` = ?())) + -- if ((`ct_1?` = ?()) <=> (`yy_1*?` = ?())) + -- (if (x_1!`%`_idx.0 < |C.TYPES_context|))?{x_1 <- `x_1?`} + -- if (x_0!`%`_idx.0 < |C.TYPES_context|) + -- (if ($unrolldt(C.TYPES_context[x_1!`%`_idx.0]) = SUB_subtype(final?{final <- `final?`}, yy_1*{yy_1 <- `yy_1*`}, `%%%`_desctype(dcs_1?{dcs_1 <- `dcs_1?`}, ?(DESCRIPTOR_descriptor(C.TYPES_context[x_0!`%`_idx.0] : deftype <: typeuse)), ct_1))))?{ct_1 <- `ct_1?`, `dcs_1?` <- `dcs_1??`, x_1 <- `x_1?`, `yy_1*` <- `yy_1*?`} + -- if ((`ct_2?` = ?()) <=> (`dcr_2??` = ?())) + -- if ((`ct_2?` = ?()) <=> (`x_2?` = ?())) + -- if ((`ct_2?` = ?()) <=> (`yy_2*?` = ?())) + -- (if (x_2!`%`_idx.0 < |C.TYPES_context|))?{x_2 <- `x_2?`} + -- (if ($unrolldt(C.TYPES_context[x_2!`%`_idx.0]) = SUB_subtype(final?{final <- `final?`}, yy_2*{yy_2 <- `yy_2*`}, `%%%`_desctype(?(DESCRIBES_describes(C.TYPES_context[x_0!`%`_idx.0] : deftype <: typeuse)), dcr_2?{dcr_2 <- `dcr_2?`}, ct_2))))?{ct_2 <- `ct_2?`, `dcr_2?` <- `dcr_2??`, x_2 <- `x_2?`, `yy_2*` <- `yy_2*?`} + -- Desctype_ok: `%|-%:OK`(C, dct) + -- (Desctype_sub: `%|-%<:%`(C, dct, dct'))*{dct' <- `dct'*`} ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { -;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:96.1-96.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:102.1-102.126 relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:179.1-180.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:212.1-213.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypeidx(x)) - ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:182.1-185.48 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:215.1-218.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)) @@ -27071,8 +27886,8 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-latest/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, `exact?` : exact?, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, 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*`},))) @@ -27161,9 +27976,9 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec - rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, FUNC_externtype(deftype_1 : deftype <: typeuse), FUNC_externtype(deftype_2 : deftype <: typeuse)) - -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + rule func{C : context, exactdeftype_1 : exactdeftype, exactdeftype_2 : exactdeftype}: + `%|-%<:%`(C, FUNC_externtype(exactdeftype_1 : exactdeftype <: exacttypeuse), FUNC_externtype(exactdeftype_2 : exactdeftype <: exacttypeuse)) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(exactdeftype_1 : exactdeftype <: exacttypeuse), _HT_heaptype(exactdeftype_2 : exactdeftype <: exacttypeuse)) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -27326,39 +28141,72 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)],)) - ;; ../../../../specification/wasm-latest/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}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:96.1-105.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, rt_3 : 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 (l!`%`_labelidx.0 < |C.LABELS_context|) -- 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_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - ;; ../../../../specification/wasm-latest/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}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:107.1-116.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, rt_3 : 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 (l!`%`_labelidx.0 < |C.LABELS_context|) -- 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_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:118.1-128.34 + rule br_on_cast_desc_eq{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, `exact?` : exact?, y : idx, rt : reftype, `null?` : null?, x : idx, `dcs?` : describes?, ct : comptype, rt_3 : reftype}: + `%|-%:%`(C, BR_ON_CAST_DESC_EQ_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype) REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)],))) + -- if (l!`%`_labelidx.0 < |C.LABELS_context|) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)],)) + -- if (rt_2 = REF_reftype(null?{null <- `null?`}, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))) + -- if (x!`%`_idx.0 < |C.TYPES_context|) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:130.1-140.49 + rule br_on_cast_desc_eq_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, `exact?` : exact?, y : idx, rt : reftype, `null?` : null?, x : idx, `dcs?` : describes?, ct : comptype, rt_3 : reftype}: + `%|-%:%`(C, BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype) REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)],))) + -- if (l!`%`_labelidx.0 < |C.LABELS_context|) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)],)) + -- if (rt_2 = REF_reftype(null?{null <- `null?`}, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))) + -- if (x!`%`_idx.0 < |C.TYPES_context|) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_1, rt_3) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_3) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:115.1-117.45 - rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:145.1-148.37 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*, `exact?` : exact?, dt : deftype}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (x!`%`_idx.0 < |C.FUNCS_context|) - -- 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.FUNCS_context[x!`%`_idx.0] = `%%`_exactdeftype(exact?{exact <- `exact?`}, dt)) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:119.1-121.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:150.1-152.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*`},))) + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x))))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- 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-latest/2.3-validation.instructions.spectec:123.1-127.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:154.1-158.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 (x!`%`_idx.0 < |C.TABLES_context|) @@ -27367,31 +28215,32 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (y!`%`_idx.0 < |C.TYPES_context|) -- 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-latest/2.3-validation.instructions.spectec:129.1-132.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:160.1-163.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/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*}: + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:166.1-172.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `exact?` : exact?, dt : deftype, `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*`},))) -- if (x!`%`_idx.0 < |C.FUNCS_context|) - -- 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.FUNCS_context[x!`%`_idx.0] = `%%`_exactdeftype(exact?{exact <- `exact?`}, dt)) + -- Expand: `%~~%`(dt, `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-latest/2.3-validation.instructions.spectec:143.1-148.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:175.1-180.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*`},))) + `%|-%:%`(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), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x))))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- 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-latest/2.3-validation.instructions.spectec:151.1-159.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:183.1-191.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 (x!`%`_idx.0 < |C.TABLES_context|) @@ -27403,260 +28252,288 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- 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-latest/2.3-validation.instructions.spectec:166.1-169.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:198.1-201.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*`},))) -- if (x!`%`_idx.0 < |C.TAGS_context|) -- 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-latest/2.3-validation.instructions.spectec:171.1-173.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:203.1-205.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:175.1-179.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:207.1-211.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 [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ 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-latest/2.3-validation.instructions.spectec:202.1-204.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:234.1-236.31 rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-latest/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))],))) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:238.1-241.20 + rule `ref.func`{C : context, x : idx, edt : exactdeftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(edt : exactdeftype <: exacttypeuse))],))) -- if (x!`%`_idx.0 < |C.FUNCS_context|) - -- if (C.FUNCS_context[x!`%`_idx.0] = dt) + -- if (C.FUNCS_context[x!`%`_idx.0] = edt) -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:211.1-212.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:243.1-244.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:214.1-216.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:246.1-248.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([I32_valtype],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:218.1-220.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:250.1-252.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([REF_valtype(?(), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:222.1-223.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:254.1-255.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:225.1-229.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:257.1-259.61 + rule `ref.get_desc`{C : context, x : idx, `exact?` : exact?, y : idx, `dcs?` : describes?, ct : comptype}: + `%|-%:%`(C, `REF.GET_DESC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],))) + -- if (x!`%`_idx.0 < |C.TYPES_context|) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:261.1-265.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([I32_valtype],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:231.1-235.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:267.1-271.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:240.1-241.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:273.1-279.50 + rule `ref.cast_desc_eq`{C : context, rt : reftype, ht : heaptype, `exact?` : exact?, y : idx, `null?` : null?, x : idx, `dcs?` : describes?, ct : comptype}: + `%|-%:%`(C, `REF.CAST_DESC_EQ`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht) REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(y))))],), [], `%`_resulttype([(rt : reftype <: valtype)],))) + -- if (rt = REF_reftype(null?{null <- `null?`}, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))))) + -- if (x!`%`_idx.0 < |C.TYPES_context|) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), ct)) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- Heaptype_sub: `%|-%<:%`(C, _HT_heaptype(`%%`_exacttypeuse(exact?{exact <- `exact?`}, _IDX_typeuse(x))), ht) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:284.1-285.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/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))],))) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:290.1-292.58 + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `dcs?` : describes?, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`},), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) + -- if (x!`%`_idx.0 < |C.TYPES_context|) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:294.1-297.48 + rule `struct.new_default`{C : context, x : idx, `dcs?` : describes?, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(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*`},))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:299.1-301.76 + rule `struct.new_desc`{C : context, x : idx, `zt*` : storagetype*, y : idx, `dcs?` : describes?, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW_DESC`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(y))))],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) + -- if (x!`%`_idx.0 < |C.TYPES_context|) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) - ;; ../../../../specification/wasm-latest/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))],))) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:303.1-306.48 + rule `struct.new_default_desc`{C : context, x : idx, y : idx, `dcs?` : describes?, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT_DESC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(y))))],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(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*`},))) + -- Expand_desc: `%~%`(C.TYPES_context[x!`%`_idx.0], `%%%`_desctype(dcs?{dcs <- `dcs?`}, ?(DESCRIPTOR_descriptor(_IDX_typeuse(y))), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:258.1-262.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:311.1-315.41 rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, 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)],))) + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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!`%`_fieldidx.0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i!`%`_fieldidx.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:264.1-267.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:317.1-320.24 rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)],), [], `%`_resulttype([],))) + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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!`%`_fieldidx.0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i!`%`_fieldidx.0] = `%%`_fieldtype(?(MUT_mut), zt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:272.1-274.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:325.1-327.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))],))) + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:276.1-279.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:329.1-332.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))],))) + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:281.1-283.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:334.1-336.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))],))) + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{},), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:285.1-288.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:338.1-341.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))],))) + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:290.1-294.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:343.1-347.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))],))) + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(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))) -- 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.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:349.1-352.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)],))) + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:301.1-303.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:354.1-356.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([],))) + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:305.1-306.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:358.1-359.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:308.1-310.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:361.1-363.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([],))) + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:312.1-316.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:365.1-369.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([],))) + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x_1)))) I32_valtype REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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|) -- 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-latest/2.3-validation.instructions.spectec:318.1-321.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:371.1-374.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([],))) + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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-latest/2.3-validation.instructions.spectec:323.1-327.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:376.1-380.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([],))) + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(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))) -- if (y!`%`_idx.0 < |C.DATAS_context|) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:332.1-334.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:385.1-387.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:336.1-338.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:389.1-391.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:343.1-345.28 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:396.1-398.28 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-latest/2.3-validation.instructions.spectec:347.1-349.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:400.1-402.29 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-latest/2.3-validation.instructions.spectec:351.1-353.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:404.1-406.29 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-latest/2.3-validation.instructions.spectec:358.1-360.30 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:411.1-413.30 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-latest/2.3-validation.instructions.spectec:362.1-364.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:415.1-417.29 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-latest/2.3-validation.instructions.spectec:369.1-371.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:422.1-424.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 (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:373.1-375.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:426.1-428.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 (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:377.1-379.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:430.1-432.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 (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:381.1-383.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:434.1-436.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([(at : addrtype <: valtype)],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:385.1-387.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:438.1-440.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 (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:389.1-393.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:442.1-446.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 (x_1!`%`_idx.0 < |C.TABLES_context|) @@ -27665,7 +28542,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:395.1-399.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:448.1-452.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 (x!`%`_idx.0 < |C.TABLES_context|) @@ -27674,31 +28551,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.ELEMS_context[y!`%`_idx.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:401.1-403.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:454.1-456.24 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-latest/2.3-validation.instructions.spectec:416.1-418.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:469.1-471.32 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-latest/2.3-validation.instructions.spectec:420.1-422.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:473.1-475.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 (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:424.1-426.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:477.1-479.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 (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:428.1-431.38 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:481.1-484.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 (x_1!`%`_idx.0 < |C.MEMS_context|) @@ -27706,7 +28583,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (x_2!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:433.1-436.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:486.1-489.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 (x!`%`_idx.0 < |C.MEMS_context|) @@ -27714,69 +28591,69 @@ 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:438.1-440.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:491.1-493.24 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) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:451.1-454.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:504.1-507.44 rule `load-num`{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 (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:456.1-459.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:509.1-512.36 rule `load-pack`{C : context, Inn : Inn, K : K, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(K,), sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(Inn : Inn <: valtype)],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, K) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:470.1-473.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:523.1-526.44 rule `store-num`{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 (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:475.1-478.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:528.1-531.36 rule `store-pack`{C : context, Inn : Inn, K : K, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(K,),)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, K) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:480.1-483.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:533.1-536.47 rule `vload-num`{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 (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:485.1-488.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:538.1-541.41 rule `vload-pack`{C : context, N : N, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(N,), M, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (N * M!`%`_M.0)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:490.1-493.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:543.1-546.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 (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:495.1-498.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:548.1-551.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 (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:500.1-504.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:553.1-557.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 (x!`%`_idx.0 < |C.MEMS_context|) @@ -27784,14 +28661,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:506.1-509.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:559.1-562.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 (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:511.1-515.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:564.1-568.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 (x!`%`_idx.0 < |C.MEMS_context|) @@ -27799,133 +28676,133 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:520.1-521.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:573.1-574.33 rule const{C : context, nt : numtype, c_nt : num_(nt)}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:523.1-524.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:576.1-577.34 rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:526.1-527.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:579.1-580.39 rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:529.1-530.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:582.1-583.39 rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:532.1-533.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:585.1-586.40 rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:535.1-536.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:588.1-589.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:541.1-542.35 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:594.1-595.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:544.1-545.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:597.1-598.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:547.1-548.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:600.1-601.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:550.1-551.55 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:603.1-604.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:553.1-554.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:606.1-607.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:556.1-557.37 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:609.1-610.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:559.1-560.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:612.1-613.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:562.1-563.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:615.1-616.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:565.1-566.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:618.1-619.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:568.1-569.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:621.1-622.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:571.1-572.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:624.1-625.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:574.1-575.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:627.1-628.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:577.1-578.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:630.1-631.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:580.1-582.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:633.1-635.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:584.1-585.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:637.1-638.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:587.1-589.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:640.1-642.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:591.1-593.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:644.1-646.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:595.1-596.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:648.1-649.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:598.1-599.57 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:651.1-652.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:601.1-602.64 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:654.1-655.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:604.1-605.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:657.1-658.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:607.1-608.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:660.1-661.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:613.1-614.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:666.1-667.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:616.1-618.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:669.1-671.46 rule instr{C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, [instr], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:621.1-625.82 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:674.1-678.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_1 <- `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*`},))) -- Instrs_ok: `%|-%:%`(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*`},))) @@ -27935,14 +28812,14 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (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-latest/2.3-validation.instructions.spectec:627.1-631.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:680.1-684.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:634.1-637.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:687.1-690.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*`},))) @@ -27993,6 +28870,14 @@ relation Instr_const: `%|-%CONST`(context, instr) rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec + rule `struct.new_desc`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DESC`_instr(x)) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec + rule `struct.new_default_desc`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT_DESC`_instr(x)) + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) @@ -28096,10 +28981,10 @@ relation Local_ok: `%|-%:%`(context, local, localtype) -- Nondefaultable: `|-%NONDEFAULTABLE`(t,) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec -relation Func_ok: `%|-%:%`(context, func, deftype) +relation Func_ok: `%|-%:%`(context, func, exactdeftype) ;; ../../../../specification/wasm-latest/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]) + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), `%%`_exactdeftype(?(EXACT_exact), C.TYPES_context[x!`%`_idx.0])) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (|`lct*`| = |`local*`|) @@ -28156,10 +29041,11 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec - rule _{C : context, x : idx}: + rule _{C : context, x : idx, `exact?` : exact?, dt : deftype}: `%|-%:OK`(C, START_start(x)) -- if (x!`%`_idx.0 < |C.FUNCS_context|) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) + -- if (C.FUNCS_context[x!`%`_idx.0] = `%%`_exactdeftype(exact?{exact <- `exact?`}, dt)) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) @@ -28195,10 +29081,10 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- if (C.TABLES_context[x!`%`_idx.0] = tt) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec - rule func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype(dt : deftype <: typeuse)) + rule func{C : context, x : idx, edt : exactdeftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype(edt : exactdeftype <: exacttypeuse)) -- if (x!`%`_idx.0 < |C.FUNCS_context|) - -- if (C.FUNCS_context[x!`%`_idx.0] = dt) + -- if (C.FUNCS_context[x!`%`_idx.0] = edt) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -28210,13 +29096,13 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:138.1-138.100 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:139.1-139.100 relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:183.1-184.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:184.1-185.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:186.1-189.54 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:187.1-190.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) @@ -28226,13 +29112,13 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:137.1-137.98 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:138.1-138.98 relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:175.1-176.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:176.1-177.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:178.1-181.49 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:179.1-182.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) @@ -28251,11 +29137,11 @@ def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-latest/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*}: + 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*, `edt*` : exactdeftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `edt_I*` : exactdeftype*, `x*` : idx*}: `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`},), `%`_list(import*{import <- `import*`},), `%`_list(tag*{tag <- `tag*`},), `%`_list(global*{global <- `global*`},), `%`_list(mem*{mem <- `mem*`},), `%`_list(table*{table <- `table*`},), `%`_list(func*{func <- `func*`},), `%`_list(data*{data <- `data*`},), `%`_list(elem*{elem <- `elem*`},), start?{start <- `start?`}, `%`_list(export*{export <- `export*`},)), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) -- if (|`import*`| = |`xt_I*`|) - -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- (Import_ok: `%|-%:%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- if (|`jt*`| = |`tag*`|) -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) @@ -28263,8 +29149,8 @@ relation Module_ok: `|-%:%`(module, moduletype) -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} -- if (|`table*`| = |`tt*`|) -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- if (|`dt*`| = |`func*`|) - -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- if (|`edt*`| = |`func*`|) + -- (Func_ok: `%|-%:%`(C, func, edt))*{edt <- `edt*`, func <- `func*`} -- if (|`data*`| = |`ok*`|) -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} -- if (|`elem*`| = |`rt*`|) @@ -28275,13 +29161,13 @@ relation Module_ok: `|-%:%`(module, moduletype) -- (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 [], 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 [], RECS []}) - -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, 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*`}, RECS []}) + -- if (C' = {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS edt_I*{edt_I <- `edt_I*`} ++ edt*{edt <- `edt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, export*{export <- `export*`}))) -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) - -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (edt_I*{edt_I <- `edt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec syntax relaxed2 = @@ -29475,6 +30361,7 @@ syntax fieldval = syntax structinst = { TYPE deftype, + DESC structaddr?, FIELDS fieldval* } @@ -29860,19 +30747,19 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../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))) + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), (dt : deftype <: typeuse))))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../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))) + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), (dt : deftype <: typeuse))))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../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))) + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), (dt : deftype <: typeuse))))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) @@ -29966,7 +30853,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:122.1-124.30 rule func{s : store, a : addr, funcinst : funcinst}: - `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype(funcinst.TYPE_funcinst : deftype <: typeuse)) + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype(`%%`_exacttypeuse(?(EXACT_exact), (funcinst.TYPE_funcinst : deftype <: typeuse)))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) @@ -30097,11 +30984,11 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-latest/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), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))) CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-latest/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), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))) RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: @@ -30431,6 +31318,56 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_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-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [TRAP_instr]) + -- if (ref_2 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-succeed-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(?(NULL_null), ht))]), [(ref_1 : ref <: instr) BR_instr(l)]) + -- otherwise + -- if (ref_1 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-succeed-addr`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype, a : addr, a' : addr}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr) BR_instr(l)]) + -- otherwise + -- if (ref_1 = `REF.STRUCT_ADDR`_ref(a)) + -- if (a < |$structinst(z)|) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + -- if (ref_2 = `REF.STRUCT_ADDR`_ref(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq-fail`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [TRAP_instr]) + -- if (ref_2 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-succeed-null`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(?(NULL_null), ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-succeed-addr`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype, a : addr, a' : addr}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.STRUCT_ADDR`_ref(a)) + -- if (a < |$structinst(z)|) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + -- if (ref_2 = `REF.STRUCT_ADDR`_ref(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `br_on_cast_desc_eq_fail-fail`{z : state, ref_1 : ref, ref_2 : ref, l : labelidx, rt_1 : reftype, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr) BR_instr(l)]) + -- otherwise + ;; ../../../../specification/wasm-latest/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)]) @@ -30767,6 +31704,41 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.get_desc-null`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `REF.GET_DESC`_instr(x)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.get_desc-struct`{z : state, a : addr, x : idx, a' : addr}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `REF.GET_DESC`_instr(x)]), [`REF.STRUCT_ADDR`_instr(a')]) + -- if (a < |$structinst(z)|) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-null`{z : state, ref_1 : ref, ref_2 : ref, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(null?{null <- `null?`}, ht))]), [TRAP_instr]) + -- if (ref_2 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-succeed-null`{z : state, ref_1 : ref, ref_2 : ref, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(?(NULL_null), ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-succeed-addr`{z : state, ref_1 : ref, ref_2 : ref, `null?` : null?, ht : heaptype, a : addr, a' : addr}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(null?{null <- `null?`}, ht))]), [(ref_1 : ref <: instr)]) + -- otherwise + -- if (ref_1 = `REF.STRUCT_ADDR`_ref(a)) + -- if (a < |$structinst(z)|) + -- if ($structinst(z)[a].DESC_structinst = ?(a')) + -- if (ref_2 = `REF.STRUCT_ADDR`_ref(a')) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `ref.cast_desc_eq-fail`{z : state, ref_1 : ref, ref_2 : ref, `null?` : null?, ht : heaptype}: + `%~>%`(`%;%`_config(z, [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.CAST_DESC_EQ`_instr(REF_reftype(null?{null <- `null?`}, ht))]), [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)]) @@ -30774,6 +31746,13 @@ relation Step_read: `%~>%`(config, instr*) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `struct.new_default_desc`{z : state, ref : ref, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) `STRUCT.NEW_DEFAULT_DESC`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [(ref : ref <: instr) `STRUCT.NEW_DESC`_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, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) @@ -30996,11 +31975,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_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:173.1-174.48 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:215.1-216.48 rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), `%;%`_config(z, [TRAP_instr])) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:176.1-182.61 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:218.1-224.61 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)]), `%;%`_config(z, [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])])) -- if (a < |$funcinst(z)|) @@ -31009,7 +31988,7 @@ relation Step: `%~>%`(config, config) -- 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-latest/4.3-execution.instructions.spectec:184.1-190.59 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:226.1-232.59 rule `call_ref-hostfunc-res`{s : store, f : frame, n : n, `val*` : val*, a : addr, yy : typeuse, s' : store, result : result, fi : funcinst, `t_1*` : valtype*, m : m, `t_2*` : valtype*, hf : text}: `%~>%`(`%;%`_config(`%;%`_state(s, f), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), `%;%`_config(`%;%`_state(s', f), $lift_result(result))) -- if (a < |$funcinst(`%;%`_state(s, f))|) @@ -31019,7 +31998,7 @@ relation Step: `%~>%`(config, config) -- if (|$hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})| > 0) -- if (RES_hostcallresult(s', result) <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:192.1-198.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:234.1-240.49 rule `call_ref-hostfunc-div`{s : store, f : frame, n : n, `val*` : val*, a : addr, yy : typeuse, fi : funcinst, `t_1*` : valtype*, m : m, `t_2*` : valtype*, hf : text}: `%~>%`(`%;%`_config(`%;%`_state(s, f), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), `%;%`_config(`%;%`_state(s, f), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) -- if (a < |$funcinst(`%;%`_state(s, f))|) @@ -31029,7 +32008,7 @@ relation Step: `%~>%`(config, config) -- if (|$hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})| > 0) -- if (BOT_hostcallresult <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:242.1-246.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:284.1-288.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([],))) @@ -31037,74 +32016,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:320.1-321.56 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:362.1-363.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:333.1-334.58 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:375.1-376.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:347.1-349.33 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:389.1-391.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:351.1-353.32 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:393.1-395.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:362.1-365.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:404.1-407.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:367.1-368.87 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:409.1-410.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:428.1-429.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:470.1-471.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:512.1-515.60 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:554.1-557.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:517.1-521.29 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:559.1-563.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:523.1-526.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:565.1-568.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:528.1-532.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:570.1-574.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:534.1-537.63 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:576.1-579.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:539.1-542.31 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:581.1-584.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:545.1-548.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:587.1-590.52 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 : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:550.1-555.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:592.1-597.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)) @@ -31112,54 +32091,66 @@ relation Step: `%~>%`(config, config) -- if (j!`%`_laneidx.0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c)|) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c)[j!`%`_laneidx.0]!`%`_lane_.0,))) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:564.1-567.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:606.1-609.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:569.1-570.84 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:611.1-612.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:630.1-631.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:672.1-673.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:707.1-711.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:778.1-782.75 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*`}}) + -- if (si = {TYPE $type(z, x), DESC ?(), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:789.1-791.47 + rule `struct.new_desc-null`{z : state, n : n, `val*` : val*, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.NULL_ADDR`_instr `STRUCT.NEW_DESC`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`},))) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:793.1-797.74 + rule `struct.new_desc-struct`{z : state, n : n, `val*` : val*, a' : addr, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.STRUCT_ADDR`_instr(a') `STRUCT.NEW_DESC`_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), DESC ?(a'), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:728.1-729.55 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:814.1-815.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_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:731.1-734.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:817.1-820.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `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!`%`_fieldidx.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_fieldidx.0], val)), [])) -- if (i!`%`_fieldidx.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:747.1-752.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:833.1-838.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:792.1-793.66 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:878.1-879.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:795.1-797.39 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:881.1-883.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:799.1-802.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:885.1-888.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))) @@ -31557,13 +32548,13 @@ syntax decl = ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:273.1-273.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:275.1-275.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31571,13 +32562,13 @@ def $typesd(decl*) : type* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:277.1-277.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:279.1-279.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31585,13 +32576,13 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:281.1-281.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:283.1-283.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31599,13 +32590,13 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:285.1-285.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:287.1-287.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31613,13 +32604,13 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:289.1-289.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:291.1-291.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31627,13 +32618,13 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:293.1-293.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:295.1-295.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31641,13 +32632,13 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:297.1-297.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:299.1-299.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31655,13 +32646,13 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:301.1-301.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:303.1-303.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31669,13 +32660,13 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:269.1-269.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:305.1-305.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:307.1-307.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31683,13 +32674,13 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:309.1-309.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:311.1-311.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31697,13 +32688,13 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:271.1-271.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:313.1-313.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:314.1-314.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 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:315.1-315.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31719,9 +32710,9 @@ def $ordered(decl*) : bool ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context,) ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec - rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `t**` : valtype**, `t'*?` : valtype*?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `edt*` : exactdeftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `t**` : valtype**, `t'*?` : valtype*?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `dt_F*` : deftype*, `exact?*` : exact?*, `t_1*` : valtype*, `t_2*` : valtype*}: `|-%:OK`(C,) - -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS `%`_resulttype(t*{t <- `t*`},)*{`t*` <- `t**`}, RETURN `%`_resulttype(t'*{t' <- `t'*`},)?{`t'*` <- `t'*?`}, REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS edt*{edt <- `edt*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS `%`_resulttype(t*{t <- `t*`},)*{`t*` <- `t**`}, RETURN `%`_resulttype(t'*{t' <- `t'*`},)?{`t'*` <- `t'*?`}, REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + `%;%|-%:%`(s, C, CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Typeuse_ok: `%|-%:OK`(C, yy) -- Expand_use: `%~~_%%`(yy, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:20.1-26.42 rule return_call_ref{s : store, C : context, yy : typeuse, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%;%|-%:%`(s, C, RETURN_CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + `%;%|-%:%`(s, C, RETURN_CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _HT_heaptype(`%%`_exacttypeuse(?(), yy)))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- Typeuse_ok: `%|-%:OK`(C, yy) -- Expand_use: `%~~_%%`(yy, C, `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*`},))) @@ -31940,15 +32932,17 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}, dt) -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) - -- Func_ok: `%|-%:%`(C, func, dt') + -- Func_ok: `%|-%:%`(C, func, `%%`_exactdeftype(?(EXACT_exact), dt')) -- Deftype_sub: `%|-%<:%`(C, dt', dt) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Structinst_ok: `%|-%:OK`(store, structinst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec - rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + rule _{s : store, dt : deftype, `a?` : addr?, `fv*` : fieldval*, `dcs?` : describes?, `dcr?` : descriptor?, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:OK`(s, {TYPE dt, DESC a?{a <- `a?`}, FIELDS fv*{fv <- `fv*`}}) + -- Expand_desc: `%~%`(dt, `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},)))) + -- (if (a < |s.STRUCTS_store|))?{a <- `a?`} + -- if (dcr?{dcr <- `dcr?`} = DESCRIPTOR_descriptor(s.STRUCTS_store[a].TYPE_structinst : deftype <: typeuse)?{a <- `a?`}) -- if (|`fv*`| = |`zt*`|) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} @@ -31974,16 +32968,16 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rec { -;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:226.1-227.50 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:227.1-228.50 relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:240.1-243.35 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:241.1-244.35 rule trans{fv_1 : fieldval, s : store, fv_2 : fieldval, fv' : fieldval}: `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:245.1-248.20 - rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:246.1-249.20 + rule `ref.struct-field`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) -- if (i < |s.STRUCTS_store[a].FIELDS_structinst|) -- if (a < |s.STRUCTS_store|) @@ -31991,20 +32985,26 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) -- if (i < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:250.1-252.42 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:251.1-253.31 + rule `ref.struct-desc`{a : addr, s : store, a' : addr}: + `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a')) + -- if (a < |s.STRUCTS_store|) + -- if (s.STRUCTS_store[a].DESC_structinst = ?(a')) + + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:255.1-257.42 rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) -- if (a < |s.ARRAYS_store|) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:254.1-255.44 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:259.1-260.44 rule `ref.exn`{a : addr, s : store, i : nat}: `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) -- if (i < |s.EXNS_store[a].FIELDS_exninst|) -- if (a < |s.EXNS_store|) - ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:257.1-258.28 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:262.1-263.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) } @@ -32103,8 +33103,8 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec - rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + rule _{dt : deftype, `a?` : addr?, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%<=%`({TYPE dt, DESC a?{a <- `a?`}, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, DESC a?{a <- `a?`}, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) -- if (|`fv*`| = |`fv'*`|) -- if (|`fv*`| = |`mut?*`|) @@ -32516,7 +33516,9 @@ grammar Bheaptype : heaptype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} ht:Babsheaptype => ht ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + prod{x : idx} {{0x62} {x:Btypeidx}} => _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))) + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse($s33_to_u32(x33)))) -- if (x33!`%`_s33.0 >= (0 : nat <:> int)) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec @@ -32577,14 +33579,29 @@ grammar Bcomptype : comptype ;; ../../../../specification/wasm-latest/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-latest/5.2-binary.types.spectec +grammar Bdescribes : describes + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x : idx} {{0x4C} {x:Btypeidx}} => DESCRIBES_describes(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec +grammar Bdescriptor : descriptor + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x : idx} {{0x4D} {x:Btypeidx}} => DESCRIPTOR_descriptor(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec +grammar Bdesctype : desctype + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype} {{dcs:Bdescribes?{dcs <- `dcs?`}} {dcr:Bdescriptor?{dcr <- `dcr?`}} {ct:Bcomptype}} => `%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct) + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bsubtype : subtype ;; ../../../../specification/wasm-latest/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*, dct : desctype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {dct:Bdesctype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, dct) ;; ../../../../specification/wasm-latest/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*, dct : desctype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {dct:Bdesctype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, dct) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + prod{dct : desctype} dct:Bdesctype => SUB_subtype(?(FINAL_final), [], dct) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Brectype : rectype @@ -32627,7 +33644,9 @@ grammar Btabletype : tabletype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bexterntype : externtype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(`%%`_exacttypeuse(?(), _IDX_typeuse(x))) + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec + prod{x : idx} {{0x20} {x:Btypeidx}} => FUNC_externtype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec @@ -32686,7 +33705,7 @@ grammar Blaneidx : laneidx ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:793.1-807.71 +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:802.1-816.71 grammar Binstr : instr ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -32740,949 +33759,963 @@ grammar Binstr : instr 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-latest/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)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:71.5-71.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:59.5-60.108 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(37,):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_DESC_EQ_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:61.5-62.113 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(38,):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_DESC_EQ_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-latest/5.3-binary.instructions.spectec:75.5-75.36 prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:72.5-72.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:76.5-76.36 prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:73.5-73.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:77.5-77.36 prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:77.5-77.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:81.5-81.38 prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:78.5-78.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:82.5-82.38 prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:85.5-85.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:89.5-89.36 prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:86.5-86.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:90.5-90.36 prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:87.5-87.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:91.5-91.58 prod{x : idx, y : idx} {{0xFC} {`%`_u32(12,):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:88.5-88.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:92.5-92.43 prod{x : idx} {{0xFC} {`%`_u32(13,):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:89.5-89.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:93.5-93.67 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14,):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:90.5-90.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:94.5-94.45 prod{x : idx} {{0xFC} {`%`_u32(15,):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:91.5-91.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:95.5-95.45 prod{x : idx} {{0xFC} {`%`_u32(16,):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:92.5-92.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:96.5-96.45 prod{x : idx} {{0xFC} {`%`_u32(17,):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:105.5-105.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:109.5-109.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:106.5-106.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:110.5-110.41 prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:107.5-107.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:111.5-111.41 prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:108.5-108.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:112.5-112.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:109.5-109.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:113.5-113.50 prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:110.5-110.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:114.5-114.50 prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:111.5-111.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:115.5-115.51 prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:112.5-112.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:116.5-116.51 prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:113.5-113.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:117.5-117.50 prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:114.5-114.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:118.5-118.50 prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:115.5-115.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:119.5-119.51 prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:116.5-116.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:120.5-120.51 prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:117.5-117.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:121.5-121.51 prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:118.5-118.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:122.5-122.51 prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:119.5-119.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:123.5-123.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:120.5-120.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:124.5-124.42 prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:121.5-121.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:125.5-125.42 prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:122.5-122.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:126.5-126.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:123.5-123.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:127.5-127.45 prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:124.5-124.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:128.5-128.46 prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:125.5-125.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:129.5-129.45 prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:126.5-126.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:130.5-130.46 prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:127.5-127.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:131.5-131.46 prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:128.5-128.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:132.5-132.36 prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:129.5-129.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:133.5-133.36 prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:130.5-130.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:134.5-134.56 prod{x : idx, y : idx} {{0xFC} {`%`_u32(8,):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:131.5-131.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:135.5-135.42 prod{x : idx} {{0xFC} {`%`_u32(9,):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:132.5-132.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:136.5-136.64 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10,):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:133.5-133.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:137.5-137.44 prod{x : idx} {{0xFC} {`%`_u32(11,):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:140.5-140.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:144.5-144.37 prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:141.5-141.24 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:145.5-145.24 prod 0xD1 => `REF.IS_NULL`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:142.5-142.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:146.5-146.34 prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:143.5-143.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:147.5-147.19 prod 0xD3 => `REF.EQ`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:144.5-144.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:148.5-148.28 prod 0xD4 => `REF.AS_NON_NULL`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:145.5-145.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:149.5-149.51 prod{ht : heaptype} {{0xFB} {`%`_u32(20,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:146.5-146.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:150.5-150.56 prod{ht : heaptype} {{0xFB} {`%`_u32(21,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:147.5-147.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:151.5-151.51 prod{ht : heaptype} {{0xFB} {`%`_u32(22,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:148.5-148.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:152.5-152.56 prod{ht : heaptype} {{0xFB} {`%`_u32(23,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:152.5-152.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:153.5-153.46 + prod{x : idx} {{0xFB} {`%`_u32(34,):Bu32} {x:Btypeidx}} => `REF.GET_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:154.5-154.59 + prod{ht : heaptype} {{0xFB} {`%`_u32(35,):Bu32} {ht:Bheaptype}} => `REF.CAST_DESC_EQ`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:155.5-155.64 + prod{ht : heaptype} {{0xFB} {`%`_u32(36,):Bu32} {ht:Bheaptype}} => `REF.CAST_DESC_EQ`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:159.5-159.43 prod{x : idx} {{0xFB} {`%`_u32(0,):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:153.5-153.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:160.5-160.51 prod{x : idx} {{0xFB} {`%`_u32(1,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:154.5-154.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:161.5-161.49 + prod{x : idx} {{0xFB} {`%`_u32(32,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:162.5-162.57 + prod{x : idx} {{0xFB} {`%`_u32(33,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:163.5-163.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:155.5-155.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:164.5-164.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:156.5-156.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:165.5-165.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:157.5-157.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:166.5-166.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:161.5-161.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:170.5-170.42 prod{x : idx} {{0xFB} {`%`_u32(6,):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:162.5-162.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:171.5-171.50 prod{x : idx} {{0xFB} {`%`_u32(7,):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:163.5-163.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:172.5-172.57 prod{x : idx, n : n} {{0xFB} {`%`_u32(8,):Bu32} {x:Btypeidx} {`%`_u32(n,):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:164.5-164.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:173.5-173.60 prod{x : idx, y : idx} {{0xFB} {`%`_u32(9,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:165.5-165.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:174.5-174.61 prod{x : idx, y : idx} {{0xFB} {`%`_u32(10,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:166.5-166.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:175.5-175.43 prod{x : idx} {{0xFB} {`%`_u32(11,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:167.5-167.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:176.5-176.45 prod{x : idx} {{0xFB} {`%`_u32(12,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:168.5-168.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:177.5-177.45 prod{x : idx} {{0xFB} {`%`_u32(13,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:169.5-169.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:178.5-178.43 prod{x : idx} {{0xFB} {`%`_u32(14,):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:170.5-170.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:179.5-179.30 prod {{0xFB} {`%`_u32(15,):Bu32}} => `ARRAY.LEN`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:171.5-171.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:180.5-180.44 prod{x : idx} {{0xFB} {`%`_u32(16,):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:172.5-172.65 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:181.5-181.65 prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17,):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:173.5-173.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:182.5-182.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(18,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:174.5-174.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:183.5-183.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(19,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:178.5-178.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:187.5-187.39 prod {{0xFB} {`%`_u32(26,):Bu32}} => `ANY.CONVERT_EXTERN`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:179.5-179.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:188.5-188.39 prod {{0xFB} {`%`_u32(27,):Bu32}} => `EXTERN.CONVERT_ANY`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:183.5-183.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:192.5-192.28 prod {{0xFB} {`%`_u32(28,):Bu32}} => `REF.I31`_instr - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:184.5-184.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:193.5-193.30 prod {{0xFB} {`%`_u32(29,):Bu32}} => `I31.GET`_instr(S_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:185.5-185.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:194.5-194.30 prod {{0xFB} {`%`_u32(30,):Bu32}} => `I31.GET`_instr(U_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:192.5-192.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:201.5-201.31 prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:193.5-193.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:202.5-202.31 prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:194.5-194.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:203.5-203.31 prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:195.5-195.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:204.5-204.31 prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:199.5-199.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:208.5-208.27 prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:203.5-203.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:212.5-212.25 prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:204.5-204.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:213.5-213.25 prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:205.5-205.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:214.5-214.27 prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:206.5-206.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:215.5-215.27 prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:207.5-207.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:216.5-216.27 prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:208.5-208.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:217.5-217.27 prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:209.5-209.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:218.5-218.27 prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:210.5-210.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:219.5-219.27 prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:211.5-211.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:220.5-220.27 prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:212.5-212.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:221.5-221.27 prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:216.5-216.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:225.5-225.27 prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:220.5-220.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:229.5-229.25 prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:221.5-221.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:230.5-230.25 prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:222.5-222.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:231.5-231.27 prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:223.5-223.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:232.5-232.27 prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:224.5-224.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:233.5-233.27 prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:225.5-225.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:234.5-234.27 prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:226.5-226.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:235.5-235.27 prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:227.5-227.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:236.5-236.27 prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:228.5-228.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:237.5-237.27 prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:229.5-229.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:238.5-238.27 prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:233.5-233.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:242.5-242.25 prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:234.5-234.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:243.5-243.25 prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:235.5-235.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:244.5-244.25 prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:236.5-236.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:245.5-245.25 prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:237.5-237.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:246.5-246.25 prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:238.5-238.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:247.5-247.25 prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:242.5-242.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:251.5-251.25 prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:243.5-243.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:252.5-252.25 prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:244.5-244.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:253.5-253.25 prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:245.5-245.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:254.5-254.25 prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:246.5-246.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:255.5-255.25 prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:247.5-247.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:256.5-256.25 prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:251.5-251.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:260.5-260.25 prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:252.5-252.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:261.5-261.25 prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:253.5-253.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:262.5-262.28 prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:257.5-257.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:266.5-266.26 prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:258.5-258.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:267.5-267.26 prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:259.5-259.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:268.5-268.26 prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:260.5-260.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:269.5-269.28 prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:261.5-261.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:270.5-270.28 prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:262.5-262.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:271.5-271.28 prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:263.5-263.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:272.5-272.28 prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:264.5-264.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:273.5-273.26 prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:265.5-265.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:274.5-274.25 prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:266.5-266.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:275.5-275.26 prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:267.5-267.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:276.5-276.26 prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:268.5-268.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:277.5-277.28 prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:269.5-269.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:278.5-278.28 prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:270.5-270.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:279.5-279.27 prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:271.5-271.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:280.5-280.27 prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:275.5-275.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:284.5-284.25 prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:276.5-276.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:285.5-285.25 prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:277.5-277.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:286.5-286.28 prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:281.5-281.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:290.5-290.31 prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:282.5-282.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:291.5-291.32 prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:286.5-286.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:295.5-295.31 prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:287.5-287.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:296.5-296.32 prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:288.5-288.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:297.5-297.32 prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:292.5-292.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:301.5-301.26 prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:293.5-293.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:302.5-302.26 prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:294.5-294.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:303.5-303.26 prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:295.5-295.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:304.5-304.28 prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:296.5-296.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:305.5-305.28 prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:297.5-297.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:306.5-306.28 prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:298.5-298.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:307.5-307.28 prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:299.5-299.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:308.5-308.26 prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:300.5-300.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:309.5-309.25 prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:301.5-301.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:310.5-310.26 prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:302.5-302.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:311.5-311.26 prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:303.5-303.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:312.5-312.28 prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:304.5-304.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:313.5-313.28 prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:305.5-305.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:314.5-314.27 prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:306.5-306.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:315.5-315.27 prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:310.5-310.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:319.5-319.25 prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:311.5-311.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:320.5-320.25 prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:312.5-312.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:321.5-321.26 prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:313.5-313.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:322.5-322.27 prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:314.5-314.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:323.5-323.27 prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:315.5-315.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:324.5-324.29 prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:316.5-316.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:325.5-325.26 prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:320.5-320.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:329.5-329.26 prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:321.5-321.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:330.5-330.26 prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:322.5-322.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:331.5-331.26 prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:323.5-323.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:332.5-332.26 prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:324.5-324.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:333.5-333.26 prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:325.5-325.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:334.5-334.26 prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:326.5-326.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:335.5-335.31 prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:330.5-330.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:339.5-339.25 prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:331.5-331.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:340.5-340.25 prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:332.5-332.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:341.5-341.26 prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:333.5-333.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:342.5-342.27 prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:334.5-334.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:343.5-343.27 prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:335.5-335.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:344.5-344.29 prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:336.5-336.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:345.5-345.26 prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:340.5-340.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:349.5-349.26 prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:341.5-341.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:350.5-350.26 prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:342.5-342.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:351.5-351.26 prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:343.5-343.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:352.5-352.26 prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:344.5-344.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:353.5-353.26 prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:345.5-345.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:354.5-354.26 prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:346.5-346.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:355.5-355.31 prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:351.5-351.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:360.5-360.31 prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:352.5-352.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:361.5-361.34 prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:353.5-353.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:362.5-362.34 prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:354.5-354.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:363.5-363.34 prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:355.5-355.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:364.5-364.34 prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:356.5-356.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:365.5-365.35 prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:357.5-357.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:366.5-366.35 prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:358.5-358.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:367.5-367.34 prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:359.5-359.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:368.5-368.34 prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:360.5-360.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:369.5-369.34 prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:361.5-361.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:370.5-370.34 prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:362.5-362.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:371.5-371.36 prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:363.5-363.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:372.5-372.36 prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:364.5-364.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:373.5-373.36 prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:365.5-365.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:374.5-374.36 prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:366.5-366.33 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:375.5-375.33 prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:367.5-367.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:376.5-376.36 prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:368.5-368.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:377.5-377.36 prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:369.5-369.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:378.5-378.36 prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:370.5-370.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:379.5-379.36 prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:371.5-371.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:380.5-380.34 prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:372.5-372.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:381.5-381.38 prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:373.5-373.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:382.5-382.38 prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:374.5-374.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:383.5-383.38 prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:375.5-375.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:384.5-384.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:379.5-379.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:388.5-388.45 prod {{0xFC} {`%`_u32(0,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:380.5-380.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:389.5-389.45 prod {{0xFC} {`%`_u32(1,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:381.5-381.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:390.5-390.45 prod {{0xFC} {`%`_u32(2,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:382.5-382.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:391.5-391.45 prod {{0xFC} {`%`_u32(3,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:383.5-383.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:392.5-392.45 prod {{0xFC} {`%`_u32(4,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:384.5-384.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:393.5-393.45 prod {{0xFC} {`%`_u32(5,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:385.5-385.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:394.5-394.45 prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:386.5-386.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:395.5-395.45 prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:396.5-396.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:405.5-405.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:397.5-397.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:406.5-406.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:398.5-398.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:407.5-407.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:399.5-399.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:408.5-408.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:400.5-400.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:409.5-409.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:401.5-401.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:410.5-410.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:402.5-402.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:411.5-411.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:403.5-403.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:412.5-412.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:404.5-404.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:413.5-413.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:405.5-405.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:414.5-414.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:406.5-406.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:415.5-415.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:407.5-407.52 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:416.5-416.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:408.5-408.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:417.5-417.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:409.5-409.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:418.5-418.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:410.5-410.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:419.5-419.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:411.5-411.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:420.5-420.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:412.5-412.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:421.5-421.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:413.5-413.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:422.5-422.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:414.5-414.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:423.5-423.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:415.5-415.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:424.5-424.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:416.5-416.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:425.5-425.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:417.5-417.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:426.5-426.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:421.5-421.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:430.5-430.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:425.5-425.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:434.5-434.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:426.5-426.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:435.5-435.49 prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:427.5-427.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:436.5-436.58 prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:431.5-431.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:440.5-440.38 prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:432.5-432.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:441.5-441.38 prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:433.5-433.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:442.5-442.38 prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:434.5-434.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:443.5-443.38 prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:435.5-435.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:444.5-444.38 prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:436.5-436.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:445.5-445.38 prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:440.5-440.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:449.5-449.60 prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:441.5-441.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:450.5-450.60 prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:442.5-442.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:451.5-451.58 prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:443.5-443.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:452.5-452.60 prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:444.5-444.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:453.5-453.60 prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:445.5-445.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:454.5-454.58 prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:446.5-446.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:455.5-455.58 prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:447.5-447.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:456.5-456.58 prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:448.5-448.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:457.5-457.58 prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:458.5-458.58 prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:450.5-450.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:459.5-459.58 prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:451.5-451.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:460.5-460.58 prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:461.5-461.58 prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:462.5-462.58 prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:457.5-457.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:466.5-466.41 prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:458.5-458.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:467.5-467.41 prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:459.5-459.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:468.5-468.43 prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:460.5-460.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:469.5-469.43 prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:461.5-461.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:470.5-470.43 prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:462.5-462.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:471.5-471.43 prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:463.5-463.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:464.5-464.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:465.5-465.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:474.5-474.43 prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:475.5-475.43 prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:470.5-470.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:479.5-479.41 prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:471.5-471.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:480.5-480.41 prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:472.5-472.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:481.5-481.43 prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:482.5-482.43 prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:474.5-474.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:483.5-483.43 prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:475.5-475.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:484.5-484.43 prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:476.5-476.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:477.5-477.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:478.5-478.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:487.5-487.43 prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:488.5-488.43 prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:483.5-483.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:492.5-492.41 prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:484.5-484.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:493.5-493.41 prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:485.5-485.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:494.5-494.43 prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:495.5-495.43 prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:487.5-487.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:496.5-496.43 prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:488.5-488.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:497.5-497.43 prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:489.5-489.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:498.5-498.43 prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:490.5-490.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:499.5-499.43 prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:491.5-491.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:500.5-500.43 prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:501.5-501.43 prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:496.5-496.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:497.5-497.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:498.5-498.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:499.5-499.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:500.5-500.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:509.5-509.41 prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:501.5-501.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:510.5-510.41 prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:505.5-505.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:514.5-514.41 prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:515.5-515.41 prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:516.5-516.41 prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:517.5-517.41 prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:509.5-509.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:518.5-518.41 prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:510.5-510.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:519.5-519.41 prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:514.5-514.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:523.5-523.36 prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:518.5-518.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:527.5-527.37 prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:519.5-519.40 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:528.5-528.40 prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:520.5-520.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:529.5-529.36 prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:521.5-521.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:530.5-530.37 prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:525.5-525.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:534.5-534.44 prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:529.5-529.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:538.5-538.43 prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:533.5-533.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:542.5-542.41 prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:534.5-534.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:543.5-543.41 prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:535.5-535.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:544.5-544.44 prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:539.5-539.48 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:548.5-548.48 prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:543.5-543.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:552.5-552.41 prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:547.5-547.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:556.5-556.53 prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:548.5-548.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:557.5-557.53 prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:552.5-552.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:561.5-561.45 prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:553.5-553.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:562.5-562.47 prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:554.5-554.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:563.5-563.47 prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:558.5-558.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:567.5-567.43 prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:559.5-559.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:568.5-568.49 prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:560.5-560.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:569.5-569.49 prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:561.5-561.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:570.5-570.43 prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:562.5-562.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:571.5-571.49 prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:563.5-563.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:572.5-572.49 prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:564.5-564.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:573.5-573.45 prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:565.5-565.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:574.5-574.45 prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:566.5-566.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:575.5-575.45 prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:567.5-567.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:576.5-576.45 prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:568.5-568.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:577.5-577.46 prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:572.5-572.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:581.5-581.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-latest/5.3-binary.instructions.spectec:573.5-573.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:582.5-582.70 prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:577.5-577.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:586.5-586.42 prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:578.5-578.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:587.5-587.42 prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:582.5-582.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:591.5-591.53 prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:583.5-583.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:592.5-592.43 prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:584.5-584.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:593.5-593.49 prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:585.5-585.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:594.5-594.49 prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:586.5-586.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:595.5-595.43 prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:587.5-587.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:596.5-596.49 prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:588.5-588.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:597.5-597.49 prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:589.5-589.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:598.5-598.43 prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:590.5-590.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:599.5-599.45 prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:591.5-591.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:600.5-600.45 prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:592.5-592.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:601.5-601.45 prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:593.5-593.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:602.5-602.45 prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:594.5-594.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:603.5-603.46 prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:595.5-595.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:604.5-604.57 prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:599.5-599.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:608.5-608.49 prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:603.5-603.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:612.5-612.41 prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:607.5-607.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:616.5-616.53 prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:608.5-608.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:617.5-617.53 prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:612.5-612.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:621.5-621.63 prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:613.5-613.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:622.5-622.64 prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:614.5-614.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:623.5-623.63 prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:615.5-615.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:624.5-624.64 prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:619.5-619.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:628.5-628.45 prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:620.5-620.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:629.5-629.47 prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:621.5-621.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:630.5-630.47 prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:625.5-625.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:634.5-634.66 prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:626.5-626.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:635.5-635.67 prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:627.5-627.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:636.5-636.66 prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:628.5-628.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:637.5-637.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-latest/5.3-binary.instructions.spectec:629.5-629.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:638.5-638.67 prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:633.5-633.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:642.5-642.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-latest/5.3-binary.instructions.spectec:634.5-634.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:643.5-643.70 prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:638.5-638.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:647.5-647.42 prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:639.5-639.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:648.5-648.42 prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:643.5-643.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:652.5-652.49 prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:647.5-647.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:656.5-656.41 prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:651.5-651.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:660.5-660.63 prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:652.5-652.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:661.5-661.64 prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:653.5-653.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:662.5-662.63 prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:654.5-654.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:663.5-663.64 prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:658.5-658.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:667.5-667.45 prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:659.5-659.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:668.5-668.49 prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:660.5-660.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:669.5-669.49 prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:664.5-664.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:673.5-673.43 prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:665.5-665.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:674.5-674.43 prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:666.5-666.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:675.5-675.43 prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:667.5-667.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:676.5-676.45 prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:668.5-668.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:677.5-677.45 prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:669.5-669.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:678.5-678.45 prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:670.5-670.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:679.5-679.45 prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:674.5-674.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:683.5-683.59 prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:675.5-675.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:684.5-684.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-latest/5.3-binary.instructions.spectec:676.5-676.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:685.5-685.67 prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:677.5-677.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:686.5-686.66 prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:678.5-678.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:687.5-687.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-latest/5.3-binary.instructions.spectec:682.5-682.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:691.5-691.72 prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOT_ADDS_vextternop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:686.5-686.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:695.5-695.42 prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:687.5-687.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:696.5-696.42 prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:691.5-691.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:700.5-700.49 prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:695.5-695.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:704.5-704.41 prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:699.5-699.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:708.5-708.63 prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:700.5-700.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:709.5-709.64 prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:701.5-701.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:710.5-710.63 prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:702.5-702.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:711.5-711.64 prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:706.5-706.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:715.5-715.45 prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:707.5-707.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:716.5-716.49 prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:708.5-708.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:717.5-717.49 prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:712.5-712.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:721.5-721.43 prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:713.5-713.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:722.5-722.43 prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:714.5-714.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:723.5-723.43 prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:718.5-718.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:727.5-727.42 prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:719.5-719.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:728.5-728.42 prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:720.5-720.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:729.5-729.46 prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:721.5-721.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:730.5-730.46 prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:722.5-722.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:731.5-731.46 prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:723.5-723.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:732.5-732.46 prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:727.5-727.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:736.5-736.66 prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:728.5-728.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:737.5-737.67 prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:729.5-729.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:738.5-738.66 prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:730.5-730.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:739.5-739.67 prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:734.5-734.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:743.5-743.43 prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:735.5-735.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:744.5-744.44 prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:736.5-736.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:745.5-745.44 prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:737.5-737.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:746.5-746.46 prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:738.5-738.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:747.5-747.42 prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:739.5-739.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:748.5-748.42 prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:740.5-740.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:749.5-749.43 prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:744.5-744.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:753.5-753.43 prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:745.5-745.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:754.5-754.43 prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:746.5-746.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:755.5-755.43 prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:756.5-756.43 prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:748.5-748.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:757.5-757.43 prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:749.5-749.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:758.5-758.43 prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:750.5-750.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:759.5-759.44 prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:751.5-751.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:760.5-760.44 prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:752.5-752.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:761.5-761.51 prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:753.5-753.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:762.5-762.51 prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:757.5-757.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:766.5-766.53 prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:758.5-758.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:767.5-767.54 prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:762.5-762.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:771.5-771.43 prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:763.5-763.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:772.5-772.44 prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:764.5-764.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:773.5-773.44 prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:765.5-765.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:774.5-774.46 prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:766.5-766.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:775.5-775.42 prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:767.5-767.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:776.5-776.42 prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:768.5-768.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:777.5-777.43 prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:772.5-772.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:781.5-781.43 prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:773.5-773.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:782.5-782.43 prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:774.5-774.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:783.5-783.43 prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:784.5-784.43 prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:776.5-776.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:785.5-785.43 prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:777.5-777.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:786.5-786.43 prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:778.5-778.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:787.5-787.44 prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:779.5-779.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:788.5-788.44 prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:780.5-780.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:789.5-789.51 prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:781.5-781.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:790.5-790.51 prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:785.5-785.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:794.5-794.53 prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:786.5-786.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:795.5-795.54 prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:787.5-787.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:796.5-796.59 prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:788.5-788.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:797.5-797.59 prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:789.5-789.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:798.5-798.59 prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:790.5-790.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:799.5-799.59 prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:794.5-794.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:803.5-803.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-latest/5.3-binary.instructions.spectec:795.5-795.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:804.5-804.61 prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:796.5-796.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:805.5-805.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-latest/5.3-binary.instructions.spectec:797.5-797.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:806.5-806.62 prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:798.5-798.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:807.5-807.60 prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:799.5-799.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:808.5-808.60 prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:800.5-800.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:809.5-809.67 prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:801.5-801.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:810.5-810.67 prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:802.5-802.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:811.5-811.64 prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:803.5-803.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:812.5-812.64 prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:804.5-804.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:813.5-813.66 prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:805.5-805.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:814.5-814.66 prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:806.5-806.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:815.5-815.71 prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:807.5-807.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:816.5-816.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))) } @@ -34483,7 +35516,9 @@ grammar Theaptype_(I : I) : heaptype ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ht : heaptype} ht:Tabsheaptype => ht ;; ../../../../specification/wasm-latest/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) + prod{x : idx} {{"("} {"exact"} {x:Ttypeidx_(I)} {")"}} => _HT_heaptype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))) + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(I) => _HT_heaptype(`%%`_exacttypeuse(?(), _IDX_typeuse(x))) ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tnull : null @@ -34549,6 +35584,21 @@ grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../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 [[?(`%`_name([],))]], TYPEDEFS []}) +;; ../../../../specification/wasm-latest/6.2-text.types.spectec +grammar Tdescribes_(I : I) : describes + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx} {{"("} {"describes"} {x:Ttypeidx_(I)} {")"}} => DESCRIBES_describes(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/6.2-text.types.spectec +grammar Tdescriptor_(I : I) : descriptor + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx} {{"("} {"descriptor"} {x:Ttypeidx_(I)} {")"}} => DESCRIPTOR_descriptor(_IDX_typeuse(x)) + +;; ../../../../specification/wasm-latest/6.2-text.types.spectec +grammar Tdesctype_(I : I) : (desctype, idctxt) + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{`dcs?` : describes?, `dcr?` : descriptor?, ct : comptype, I' : I} {{dcs?{dcs <- `dcs?`}:Tdescribes_(I)?{}} {dcr?{dcr <- `dcr?`}:Tdescriptor_(I)?{}} {(ct, I'):Tcomptype_(I)}} => (`%%%`_desctype(dcs?{dcs <- `dcs?`}, dcr?{dcr <- `dcr?`}, ct), I') + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfinal : final ;; ../../../../specification/wasm-latest/6.2-text.types.spectec @@ -34557,7 +35607,7 @@ grammar Tfinal : final ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tsubtype_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-latest/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*, dct : desctype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(dct, I'):Tdesctype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, dct), I') ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttypedef_(I : I) : (subtype, idctxt) @@ -34588,12 +35638,12 @@ grammar Ttypeuse_(I : I) : (typeidx, idctxt) ;; ../../../../specification/wasm-latest/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 (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `%%%`_desctype(?(), ?(), `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-latest/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 (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `%%%`_desctype(?(), ?(), `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',) @@ -34630,7 +35680,9 @@ grammar Texterntype_(I : I) : (externtype, idctxt) ;; ../../../../specification/wasm-latest/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 []}) ;; ../../../../specification/wasm-latest/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(`%%`_exacttypeuse(?(), _IDX_typeuse(x))), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {"("} {"exact"} {(x, I'):Ttypeuse_(I)} {")"} {")"}} => (FUNC_externtype(`%%`_exacttypeuse(?(EXACT_exact), _IDX_typeuse(x))), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tlabel_(I : I) : (name?, I) @@ -34715,6 +35767,10 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_desc_eq"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_DESC_EQ_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_desc_eq_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_DESC_EQ_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) @@ -34877,6 +35933,10 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{x : idx} {{"ref.get_desc"} {x:Ttypeidx_(I)}} => `REF.GET_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast_desc_eq"} {rt:Treftype_(I)}} => `REF.CAST_DESC_EQ`_instr(rt) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.i31" => `REF.I31`_instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i31.get_s" => `I31.GET`_instr(S_sx) @@ -34887,6 +35947,10 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_desc"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default_desc"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT_DESC`_instr(x) + ;; ../../../../specification/wasm-latest/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-latest/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) @@ -35871,6 +36935,8 @@ grammar Texportfuncdots_(I : I) : () 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 + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {"("} {"exact"} {Ttypeuse_(I)} {")"}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttag_(I : I) : ()